当前位置: 首页 > 面试题库 >

具有进度和MultipartEntityBuilder的HttpClient发布

谢高峯
2023-03-14
问题内容

我尝试在使用HttpClient4.3.3和更高版本上传文件时实现进度MultipartEntityBuilder

所以实际上我用以下代码执行发布请求

HttpClientBuilder builder = HttpClientBuilder.create();
HttpClient httpClient = builder.build();

HttpPost httpPost = new HttpPost(uploadUrl);

MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create();
entityBuilder.addPart("filea", new FileBody(filea));
entityBuilder.addPart("fileb", new FileBody(fileb));

final HttpEntity entity = entityBuilder.build();
httpPost.setEntity(entity);

HttpResponse response = httpClient.execute(httpPost);

知道如何从上传中获取实际进度吗?我进行了很多搜索-但示例仅针对android系统而非纯Java或旧版本,HttpClient因此不适用于我…


问题答案:

我刚刚找到了一个解决方案:

您需要一个HttpEntityWrapper对已处理字节进行计数并具有回调的。

ProgressHttpEntityWrapper.ProgressCallback progressCallback = new ProgressHttpEntityWrapper.ProgressCallback() {

        @Override
        public void progress(float progress) {
            //Use the progress
        }

    }

httpPost.setEntity(new ProgressHttpEntityWrapper(entityBuilder.build(), progressCallback));
这是来自 ProgressHttpEntityWrapper以下[网址]( https://github.com/x2on/gradle-
hockeyapp-
plugin/blob/master/src/main/groovy/de/felixschulze/gradle/util/ProgressHttpEntityWrapper.groovy)的完整代码:[https]( https://github.com/x2on/gradle-
hockeyapp-
plugin/blob/master/src/main/groovy/de/felixschulze/gradle/util/ProgressHttpEntityWrapper.groovy)
//github.com/x2on/gradle-hockeyapp-
plugin/blob/master/src/main/groovy/de/felixschulze/gradle/util/ProgressHttpEntityWrapper.groovy

该解决方案的主要来源:https :
//stackoverflow.com/a/7319110/268795



 类似资料:
  • 我正在尝试使用MultipartEntityBuilder和HttpURLConnection向服务器发送一个映像,然后接收一个字符串答案(现在它使用http协议,但我将使用此代码或非常类似的代码使用https来完成)。但当我按下按钮发送时,应用程序崩溃了,而logcat没有告诉我任何关于捕获的信息。下一个代码来自我执行此操作的类: 我试图解决这个问题:从浏览器下载包,然后将其粘贴到库中的文件夹/

  • 问题内容: 我升级了httpmime程序包,现在我的字符串不作为UTF-8发送或接收 我想念什么?我曾经构建一个StringBody并在stringbody中设置字符集,但是现在已弃用了它,但似乎不起作用 问题答案: 解决了:)事实证明ContentType现在很重要,我发送的是纯文本,还有一些是JSON文本, 对于纯文本,可以使用: 对于JSON: 这样,字符集也可用于JSON字符串(很奇怪,但

  • 我想通过客户端注释获得HttpClient,因此由Micronaut管理。但是,这样我就不能使用属性文件中的url: 是否允许Micronaut管理HttpClient,同时仍然使用来自我的application.yml的url?

  • 我有一个在RHEL 7.8服务器上的Apache Tomcat8.0.21.0下运行的Java应用程序。它从浏览器获取输入并将文件上传到远程服务器上运行的另一个Java应用程序。 部分代码为: 相当冗长的异常: java.lang.LinkageError:加载器约束冲突:解析方法" org . Apache . http . entity . mime . multipartentitybuil

  • 在一个有2%左右填充的容器中,我有两个div框。左侧div框的宽度固定为200px,右侧边距固定为60px。我想要正确的div调整它的宽度,浏览器窗口变小/变大。我如何实现红色框的宽度(独立于浏览器的宽度)一直填充到容器的rigth填充开始,而蓝色div保持其200px? JSfiddle:http://jsfidle.net/3vhrst19/3/ HTML: CSS:

  • 我正在使用HttpClient 4.3。3.我的任务是将文件上传到服务器上。以下是我的代码: 当我运行此代码时,它成功地连接到服务器。但响应的输出是 当我使用firebug进行调试时,我看到以下请求头。 响应头视图源 缓存控制无存储,无缓存 连接保持活力 日期2014年5月22日星期四08:58:02 GMT 保持活动超时=30 服务器***** 设置Cookie****路径=/ 转移编码分块 请