🐛 #1220 修复公众号永久素材相关的部分okhttp实现有问题的接口

This commit is contained in:
Binary Wang 2019-09-22 23:26:09 +08:00
parent df1aa5c9dc
commit 779f1d08a9
6 changed files with 45 additions and 34 deletions

View File

@ -1,24 +1,24 @@
package me.chanjar.weixin.mp.util.requestexecuter.material;
import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.collect.ImmutableMap;
import me.chanjar.weixin.common.WxType;
import me.chanjar.weixin.common.error.WxError;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.util.http.RequestHttp;
import me.chanjar.weixin.common.util.http.ResponseHandler;
import me.chanjar.weixin.common.util.http.okhttp.OkHttpProxyInfo;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import me.chanjar.weixin.common.util.json.WxGsonBuilder;
import okhttp3.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
/**
* Created by ecoolper on 2017/5/5.
* .
*
* @author ecoolper
* @date 2017/5/5
*/
public class MaterialDeleteOkhttpRequestExecutor extends MaterialDeleteRequestExecutor<OkHttpClient, OkHttpProxyInfo> {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@ -28,25 +28,25 @@ public class MaterialDeleteOkhttpRequestExecutor extends MaterialDeleteRequestEx
}
@Override
public void execute(String uri, String data, ResponseHandler<Boolean> handler, WxType wxType) throws WxErrorException, IOException {
public void execute(String uri, String data, ResponseHandler<Boolean> handler, WxType wxType)
throws WxErrorException, IOException {
handler.handle(this.execute(uri, data, wxType));
}
@Override
public Boolean execute(String uri, String materialId, WxType wxType) throws WxErrorException, IOException {
logger.debug("MaterialDeleteOkhttpRequestExecutor is running");
//得到httpClient
OkHttpClient client = requestHttp.getRequestHttpClient();
RequestBody requestBody = new FormBody.Builder().add("media_id", materialId).build();
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"),
WxGsonBuilder.create().toJson(ImmutableMap.of("media_id", materialId)));
Request request = new Request.Builder().url(uri).post(requestBody).build();
Response response = client.newCall(request).execute();
Response response = requestHttp.getRequestHttpClient().newCall(request).execute();
String responseContent = response.body().string();
WxError error = WxError.fromJson(responseContent, WxType.MP);
if (error.getErrorCode() != 0) {
throw new WxErrorException(error);
} else {
return true;
}
return true;
}
}

View File

@ -28,13 +28,11 @@ public class MaterialNewsInfoOkhttpRequestExecutor extends MaterialNewsInfoReque
@Override
public WxMpMaterialNews execute(String uri, String materialId, WxType wxType) throws WxErrorException, IOException {
OkHttpClient client = requestHttp.getRequestHttpClient();
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"),
WxGsonBuilder.create().toJson(ImmutableMap.of("media_id", materialId)));
Request request = new Request.Builder().url(uri).post(requestBody).build();
Response response = client.newCall(request).execute();
Response response = requestHttp.getRequestHttpClient().newCall(request).execute();
String responseContent = response.body().string();
log.debug("响应原始数据:{}", responseContent);

View File

@ -38,8 +38,6 @@ public class MaterialUploadOkhttpRequestExecutor extends MaterialUploadRequestEx
throw new FileNotFoundException();
}
//得到httpClient
OkHttpClient client = requestHttp.getRequestHttpClient();
MultipartBody.Builder bodyBuilder = new MultipartBody.Builder()

View File

@ -1,10 +1,12 @@
package me.chanjar.weixin.mp.util.requestexecuter.material;
import com.google.common.collect.ImmutableMap;
import me.chanjar.weixin.common.WxType;
import me.chanjar.weixin.common.error.WxError;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.util.http.RequestHttp;
import me.chanjar.weixin.common.util.http.okhttp.OkHttpProxyInfo;
import me.chanjar.weixin.common.util.json.WxGsonBuilder;
import me.chanjar.weixin.mp.bean.material.WxMpMaterialVideoInfoResult;
import okhttp3.*;
import org.slf4j.Logger;
@ -25,12 +27,11 @@ public class MaterialVideoInfoOkhttpRequestExecutor extends MaterialVideoInfoReq
@Override
public WxMpMaterialVideoInfoResult execute(String uri, String materialId, WxType wxType) throws WxErrorException, IOException {
logger.debug("MaterialVideoInfoOkhttpRequestExecutor is running");
//得到httpClient
OkHttpClient client = requestHttp.getRequestHttpClient();
RequestBody requestBody = new FormBody.Builder().add("media_id", materialId).build();
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"),
WxGsonBuilder.create().toJson(ImmutableMap.of("media_id", materialId)));
Request request = new Request.Builder().url(uri).post(requestBody).build();
Response response = client.newCall(request).execute();
Response response = requestHttp.getRequestHttpClient().newCall(request).execute();
String responseContent = response.body().string();
WxError error = WxError.fromJson(responseContent, WxType.MP);
if (error.getErrorCode() != 0) {

View File

@ -1,10 +1,12 @@
package me.chanjar.weixin.mp.util.requestexecuter.material;
import com.google.common.collect.ImmutableMap;
import me.chanjar.weixin.common.WxType;
import me.chanjar.weixin.common.error.WxError;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.util.http.RequestHttp;
import me.chanjar.weixin.common.util.http.okhttp.OkHttpProxyInfo;
import me.chanjar.weixin.common.util.json.WxGsonBuilder;
import okhttp3.*;
import okio.BufferedSink;
import okio.Okio;
@ -27,7 +29,9 @@ public class MaterialVoiceAndImageDownloadOkhttpRequestExecutor extends Material
public InputStream execute(String uri, String materialId, WxType wxType) throws WxErrorException, IOException {
logger.debug("MaterialVoiceAndImageDownloadOkhttpRequestExecutor is running");
OkHttpClient client = requestHttp.getRequestHttpClient();
RequestBody requestBody = new FormBody.Builder().add("media_id", materialId).build();
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"),
WxGsonBuilder.create().toJson(ImmutableMap.of("media_id", materialId)));
Request request = new Request.Builder().url(uri).get().post(requestBody).build();
Response response = client.newCall(request).execute();
String contentTypeHeader = response.header("Content-Type");
@ -35,6 +39,7 @@ public class MaterialVoiceAndImageDownloadOkhttpRequestExecutor extends Material
String responseContent = response.body().string();
throw new WxErrorException(WxError.fromJson(responseContent, WxType.MP));
}
try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); BufferedSink sink = Okio.buffer(Okio.sink(outputStream))) {
sink.writeAll(response.body().source());
return new ByteArrayInputStream(outputStream.toByteArray());

View File

@ -9,16 +9,16 @@ import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.test.ApiTestModule;
import me.chanjar.weixin.mp.api.test.TestConstants;
import me.chanjar.weixin.mp.bean.material.*;
import org.testng.annotations.*;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Guice;
import org.testng.annotations.Test;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.*;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertTrue;
import static org.testng.Assert.*;
/**
* 素材管理相关接口的测试
@ -27,7 +27,7 @@ import static org.testng.Assert.assertTrue;
* @author codepiano
* @author Binary Wang
*/
@Test(groups = "materialAPI")
@Test
@Guice(modules = ApiTestModule.class)
public class WxMpMaterialServiceImplTest {
@Inject
@ -175,7 +175,7 @@ public class WxMpMaterialServiceImplTest {
}
}
@Test(dependsOnMethods = {"testAddNews","testUploadMaterial"})
@Test(dependsOnMethods = {"testAddNews", "testUploadMaterial"})
public void testGetNewsInfo() throws WxErrorException {
WxMpMaterialNews wxMpMaterialNewsSingle = this.wxService
.getMaterialService().materialNewsInfo(this.singleNewsMediaId);
@ -243,6 +243,15 @@ public class WxMpMaterialServiceImplTest {
@Test(dependsOnMethods = {"testMaterialFileList"}, dataProvider = "allTestMaterial")
public void testDeleteMaterial(String mediaId) throws WxErrorException {
this.delete(mediaId);
}
@Test
public void testDeleteMaterialDirectly() throws WxErrorException {
this.delete("abc");
}
public void delete(String mediaId) throws WxErrorException {
boolean result = this.wxService.getMaterialService().materialDelete(mediaId);
assertTrue(result);
}