我正在尝试制作一个可以在两台服务器之间同步数据的小工具。大多数调用都使用JSON进行REST调用,因此我决定使用Apache HttpClient。 但是我需要上传一个文件。我正在尝试使用mutipart表单数据与MutipartEntityBuilder这样做,但我遇到内容太长的问题。 (我试图gzip文件的内容,但我仍然超过限制)。
这是我的java代码:
HttpPost request = new HttpPost(baseUrl+URL);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
//create upload file params
builder.addTextBody("scanName", "Test upload");
builder.addBinaryBody("myfile", f);
HttpEntity params= builder.build();
request.setEntity(params);
request.addHeader("content-type","multipart/form-data");
HttpResponse response = httpClient.execute(request);
我应该在文件上传部分使用更好的atlernative吗?我也打算从服务器之一下载文件。在尝试处理这些回复时,我会遇到类似的问题吗?
我有什么问题吗?
答案 0 :(得分:1)
我尝试使用你的代码并发送一些大小约为33MB的文件并且它成功了。所以,我认为您的问题如下:
创建的http客户端对请求大小有限制 - 在这种情况下,您需要更改客户端的属性或使用其他客户端;
在某些代码中,您可以调用HttpEntity.getContent()
方法。对于此方法的多部分请求存在限制 - 25kB。在这种情况下,您需要使用writeTo(OutputStream)
代替getContent()
在评论中你说过招摇,但我不明白这是什么意思。如果你使用swagger生成的api,问题可能发生在他们的代码中,你需要修复生成逻辑(或类似的东西 - 我从来没用过招摇)
我希望我的回答能帮到你