mirror of
https://gitee.com/binary/weixin-java-tools.git
synced 2025-06-28 13:16:19 +08:00
🐛 #3203 【公众号】修复使用okhttp 方式永久素材下载接口存在的问题
This commit is contained in:
parent
c68e2301ca
commit
8610c0f0af
@ -46,7 +46,7 @@ public class MaterialVoiceAndImageDownloadApacheHttpRequestExecutor extends Mate
|
|||||||
// 下载媒体文件出错
|
// 下载媒体文件出错
|
||||||
byte[] responseContent = IOUtils.toByteArray(inputStream);
|
byte[] responseContent = IOUtils.toByteArray(inputStream);
|
||||||
String responseContentString = new String(responseContent, StandardCharsets.UTF_8);
|
String responseContentString = new String(responseContent, StandardCharsets.UTF_8);
|
||||||
if (responseContentString.length() < 100) {
|
if (responseContentString.length() <= 215) {
|
||||||
try {
|
try {
|
||||||
WxError wxError = WxGsonBuilder.create().fromJson(responseContentString, WxError.class);
|
WxError wxError = WxGsonBuilder.create().fromJson(responseContentString, WxError.class);
|
||||||
if (wxError.getErrorCode() != 0) {
|
if (wxError.getErrorCode() != 0) {
|
||||||
|
@ -42,7 +42,7 @@ public class MaterialVoiceAndImageDownloadJoddHttpRequestExecutor extends Materi
|
|||||||
// 下载媒体文件出错
|
// 下载媒体文件出错
|
||||||
byte[] responseContent = IOUtils.toByteArray(inputStream);
|
byte[] responseContent = IOUtils.toByteArray(inputStream);
|
||||||
String responseContentString = new String(responseContent, StandardCharsets.UTF_8);
|
String responseContentString = new String(responseContent, StandardCharsets.UTF_8);
|
||||||
if (responseContentString.length() < 100) {
|
if (responseContentString.length() <= 215) {
|
||||||
try {
|
try {
|
||||||
WxError wxError = WxGsonBuilder.create().fromJson(responseContentString, WxError.class);
|
WxError wxError = WxGsonBuilder.create().fromJson(responseContentString, WxError.class);
|
||||||
if (wxError.getErrorCode() != 0) {
|
if (wxError.getErrorCode() != 0) {
|
||||||
|
@ -10,6 +10,7 @@ import me.chanjar.weixin.common.util.json.WxGsonBuilder;
|
|||||||
import okhttp3.*;
|
import okhttp3.*;
|
||||||
import okio.BufferedSink;
|
import okio.BufferedSink;
|
||||||
import okio.Okio;
|
import okio.Okio;
|
||||||
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@ -35,14 +36,12 @@ public class MaterialVoiceAndImageDownloadOkhttpRequestExecutor extends Material
|
|||||||
Request request = new Request.Builder().url(uri).get().post(requestBody).build();
|
Request request = new Request.Builder().url(uri).get().post(requestBody).build();
|
||||||
Response response = client.newCall(request).execute();
|
Response response = client.newCall(request).execute();
|
||||||
String contentTypeHeader = response.header("Content-Type");
|
String contentTypeHeader = response.header("Content-Type");
|
||||||
if ("text/plain".equals(contentTypeHeader) || "application/json; charset=utf-8".equals(contentTypeHeader)) {
|
if ("text/plain".equals(contentTypeHeader) || "application/json; charset=utf-8".equals(contentTypeHeader)
|
||||||
|
|| "application/json; encoding=utf-8".equals(contentTypeHeader)) {
|
||||||
String responseContent = response.body().string();
|
String responseContent = response.body().string();
|
||||||
throw new WxErrorException(WxError.fromJson(responseContent, WxType.MP));
|
throw new WxErrorException(WxError.fromJson(responseContent, WxType.MP));
|
||||||
}
|
}
|
||||||
|
byte[] responseContent = IOUtils.toByteArray(response.body().source().inputStream());
|
||||||
try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); BufferedSink sink = Okio.buffer(Okio.sink(outputStream))) {
|
return new ByteArrayInputStream(responseContent);
|
||||||
sink.writeAll(response.body().source());
|
|
||||||
return new ByteArrayInputStream(outputStream.toByteArray());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user