#269 修复okhttp实现素材上传时的问题

This commit is contained in:
Binary Wang 2017-07-06 15:59:13 +08:00
parent e9f55665ec
commit dde7c643fa
3 changed files with 33 additions and 26 deletions

View File

@ -39,8 +39,12 @@ public class OkHttpMediaUploadRequestExecutor extends MediaUploadRequestExecutor
//得到httpClient //得到httpClient
OkHttpClient client = clientBuilder.build(); OkHttpClient client = clientBuilder.build();
RequestBody fileBody = RequestBody.create(MediaType.parse("multipart/form-data"), file); RequestBody body = new MultipartBody.Builder()
RequestBody body = new MultipartBody.Builder().addFormDataPart("media", null, fileBody).build(); .setType(MediaType.parse("multipart/form-data"))
.addFormDataPart("media",
file.getName(),
RequestBody.create(MediaType.parse("application/octet-stream"), file))
.build();
Request request = new Request.Builder().url(uri).post(body).build(); Request request = new Request.Builder().url(uri).post(body).build();
Response response = client.newCall(request).execute(); Response response = client.newCall(request).execute();

View File

@ -25,6 +25,14 @@ public class OkhttpMaterialUploadRequestExecutor extends MaterialUploadRequestEx
@Override @Override
public WxMpMaterialUploadResult execute(String uri, WxMpMaterial material) throws WxErrorException, IOException { public WxMpMaterialUploadResult execute(String uri, WxMpMaterial material) throws WxErrorException, IOException {
if (material == null) {
throw new WxErrorException(WxError.newBuilder().setErrorMsg("非法请求material参数为空").build());
}
File file = material.getFile();
if (file == null || !file.exists()) {
throw new FileNotFoundException();
}
OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder().connectionPool(requestHttp.getRequestHttpClient()); OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder().connectionPool(requestHttp.getRequestHttpClient());
//设置代理 //设置代理
if (requestHttp.getRequestHttpProxy() != null) { if (requestHttp.getRequestHttpProxy() != null) {
@ -40,27 +48,19 @@ public class OkhttpMaterialUploadRequestExecutor extends MaterialUploadRequestEx
.build(); .build();
} }
}); });
//得到httpClient
OkHttpClient client = clientBuilder.build();
MultipartBody.Builder bodyBuilder = new MultipartBody.Builder()
if (material == null) { .setType(MediaType.parse("multipart/form-data"))
throw new WxErrorException(WxError.newBuilder().setErrorMsg("非法请求material参数为空").build()); .addFormDataPart("media",
} file.getName(),
RequestBody.create(MediaType.parse("application/octet-stream"), file));
File file = material.getFile();
if (file == null || !file.exists()) {
throw new FileNotFoundException();
}
RequestBody fileBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
MultipartBody.Builder bodyBuilder = new MultipartBody.Builder().addFormDataPart("media", null, fileBody);
Map<String, String> form = material.getForm(); Map<String, String> form = material.getForm();
if (material.getForm() != null) { if (form != null) {
bodyBuilder.addFormDataPart("description", WxGsonBuilder.create().toJson(form)); bodyBuilder.addFormDataPart("description", WxGsonBuilder.create().toJson(form));
} }
RequestBody body = bodyBuilder.build();
Request request = new Request.Builder().url(uri).post(body).build(); Request request = new Request.Builder().url(uri).post(bodyBuilder.build()).build();
Response response = client.newCall(request).execute(); Response response = clientBuilder.build().newCall(request).execute();
String responseContent = response.body().string(); String responseContent = response.body().string();
WxError error = WxError.fromJson(responseContent); WxError error = WxError.fromJson(responseContent);
if (error.getErrorCode() != 0) { if (error.getErrorCode() != 0) {
@ -69,4 +69,5 @@ public class OkhttpMaterialUploadRequestExecutor extends MaterialUploadRequestEx
return WxMpMaterialUploadResult.fromJson(responseContent); return WxMpMaterialUploadResult.fromJson(responseContent);
} }
} }
} }

View File

@ -21,7 +21,7 @@ public class OkhttpMediaImgUploadRequestExecutor extends MediaImgUploadRequestEx
} }
@Override @Override
public WxMediaImgUploadResult execute(String uri, File data) throws WxErrorException, IOException { public WxMediaImgUploadResult execute(String uri, File file) throws WxErrorException, IOException {
OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder().connectionPool(requestHttp.getRequestHttpClient()); OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder().connectionPool(requestHttp.getRequestHttpClient());
//设置代理 //设置代理
if (requestHttp.getRequestHttpProxy() != null) { if (requestHttp.getRequestHttpProxy() != null) {
@ -37,14 +37,16 @@ public class OkhttpMediaImgUploadRequestExecutor extends MediaImgUploadRequestEx
.build(); .build();
} }
}); });
//得到httpClient
OkHttpClient client = clientBuilder.build();
RequestBody fileBody = RequestBody.create(MediaType.parse("multipart/form-data"), data); RequestBody body = new MultipartBody.Builder()
RequestBody body = new MultipartBody.Builder().addFormDataPart("media", null, fileBody).build(); .setType(MediaType.parse("multipart/form-data"))
.addFormDataPart("media",
file.getName(),
RequestBody.create(MediaType.parse("application/octet-stream"), file))
.build();
Request request = new Request.Builder().url(uri).post(body).build(); Request request = new Request.Builder().url(uri).post(body).build();
Response response = clientBuilder.build().newCall(request).execute();
Response response = client.newCall(request).execute();
String responseContent = response.body().string(); String responseContent = response.body().string();
WxError error = WxError.fromJson(responseContent); WxError error = WxError.fromJson(responseContent);
if (error.getErrorCode() != 0) { if (error.getErrorCode() != 0) {