MultipartFormEntity - 内容太长

时间:2017-08-17 05:40:27

标签: java apache http multipart apache-httpasyncclient

我正在使用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只是一个字节数组。

1 个答案:

答案 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);
     }

 }