我正在使用Java和HttpAsyncClient,并尝试使用multipart / form向服务器发出post请求。有两个参数:一个是字符串,第二个是fie / byte数组。当我需要使用大型字节数组执行请求时,我得到以下异常:org.apache.http.ContentTooLongException:内容长度太长。
有没有办法克服这个问题?如何使用Java和此实体使用multipart / form创建大型请求?
以下是我的一些代码:
final HttpPost post = new HttpPost(uri);
final HttpEntity entity = MultipartEntityBuilder.create()
.addTextBody("name", fileName).addBinaryBody("file", rawContent, ContentType.APPLICATION_OCTET_STREAM, fileName)
.build();
post.setEntity(entity);
return client.execute(post, null);
其中rawContent只是一个字节数组。
答案 0 :(得分:1)
回答这个问题'有什么办法可以解决这个问题吗? ': 您可以在“MultipartFormEntity”类中尝试此代码
@Override
public InputStream getContent() throws IOException {
if (this.contentLength < 0) {
throw new ContentTooLongException("Content length is unknown");
} else if (this.contentLength > 25 * 1024) {
throw new ContentTooLongException("Content length is too long: " + this.contentLength);
}
final ByteArrayOutputStream outstream = new ByteArrayOutputStream();
writeTo(outstream);
outstream.flush();
return new ByteArrayInputStream(outstream.toByteArray());
}
@Override
public void writeTo(final OutputStream outstream) throws IOException {
this.multipart.writeTo(outstream);
}
}