gpt4 book ai didi

java - 带有进度和 MultipartEntityBuilder 的 HttpClient Post

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:47:05 25 4
gpt4 key购买 nike

我尝试在使用 HttpClient 4.3.3 和 MultipartEntityBuilder 上传文件时实现进度

所以实际上我用下面的代码执行了一个post请求

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://stackoverflow.com/a/7319110/268795

关于java - 带有进度和 MultipartEntityBuilder 的 HttpClient Post,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22932821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com