Browse Source

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

master
Binary Wang 7 years ago
committed by Binary Wang
parent
commit
afeabff363
3 changed files with 33 additions and 26 deletions
  1. +6
    -2
      weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/okhttp/OkHttpMediaUploadRequestExecutor.java
  2. +18
    -17
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/okhttp/OkhttpMaterialUploadRequestExecutor.java
  3. +9
    -7
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/okhttp/OkhttpMediaImgUploadRequestExecutor.java

+ 6
- 2
weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/okhttp/OkHttpMediaUploadRequestExecutor.java 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();


+ 18
- 17
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/okhttp/OkhttpMaterialUploadRequestExecutor.java 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);
}
}

}

+ 9
- 7
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/okhttp/OkhttpMediaImgUploadRequestExecutor.java 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();
Request request = new Request.Builder().url(uri).post(body).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();

Response response = client.newCall(request).execute();
Request request = new Request.Builder().url(uri).post(body).build();
Response response = clientBuilder.build().newCall(request).execute();
String responseContent = response.body().string();
WxError error = WxError.fromJson(responseContent);
if (error.getErrorCode() != 0) {


Loading…
Cancel
Save