🐛 #3203 【公众号】修复使用okhttp 方式永久素材下载接口存在的问题

This commit is contained in:
令狐冲 2024-01-01 22:49:02 +08:00 committed by GitHub
parent c68e2301ca
commit 8610c0f0af
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 7 additions and 8 deletions

View File

@ -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) {

View File

@ -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) {

View File

@ -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());
}
} }
} }