修复InputStreamBody下无法获取长度的问题

This commit is contained in:
jinyu 2015-12-14 19:43:56 +08:00
parent 9b67fbb1bb
commit d820d3d18b
2 changed files with 4 additions and 7 deletions

View File

@ -39,6 +39,7 @@ public class InputStreamBody extends AbstractContentBody {
private final InputStream in;
private final String filename;
private int contentLength;
public InputStreamBody(final InputStream in, final String mimeType,
final String filename) {
@ -67,6 +68,7 @@ public class InputStreamBody extends AbstractContentBody {
int l;
while ((l = this.in.read(tmp)) != -1) {
out.write(tmp, 0, l);
contentLength += l;
}
out.flush();
} finally {
@ -83,12 +85,7 @@ public class InputStreamBody extends AbstractContentBody {
}
public long getContentLength() {
try {
return in.available();
} catch (IOException e) {
;
}
return -1;
return contentLength;
}
public String getFilename() {

View File

@ -207,7 +207,7 @@ public class MediaApi extends MpApi {
String media_upload_uri = getRequestUri("media_upload_uri");
response = weixinExecutor.post(String.format(media_upload_uri,
token.getAccessToken(), mediaType.name()),
new FormBodyPart("media", new ByteArrayBody(content, mediaType
new FormBodyPart("media", new InputStreamBody(new ByteArrayInputStream(content), mediaType
.getContentType().getMimeType(),
fileName)));
JSONObject obj = response.getAsJson();