#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
OkHttpClient client = clientBuilder.build();
RequestBody fileBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
RequestBody body = new MultipartBody.Builder().addFormDataPart("media", null, fileBody).build();
RequestBody body = new MultipartBody.Builder()
.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();
Response response = client.newCall(request).execute();

View File

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

View File

@ -21,7 +21,7 @@ public class OkhttpMediaImgUploadRequestExecutor extends MediaImgUploadRequestEx
}
@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());
//设置代理
if (requestHttp.getRequestHttpProxy() != null) {
@ -37,14 +37,16 @@ public class OkhttpMediaImgUploadRequestExecutor extends MediaImgUploadRequestEx
.build();
}
});
//得到httpClient
OkHttpClient client = clientBuilder.build();
RequestBody fileBody = RequestBody.create(MediaType.parse("multipart/form-data"), data);
RequestBody body = new MultipartBody.Builder().addFormDataPart("media", null, fileBody).build();
RequestBody body = new MultipartBody.Builder()
.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();
Response response = client.newCall(request).execute();
Response response = clientBuilder.build().newCall(request).execute();
String responseContent = response.body().string();
WxError error = WxError.fromJson(responseContent);
if (error.getErrorCode() != 0) {