如何从CloseableHttpClient POST获取上传进度?

时间:2014-03-31 22:40:15

标签: java apache-httpclient-4.x apache-httpcomponents

我正在开发一个Maven插件,最终将二进制文件POST到服务器。我正在使用HTTPComponents 4.3。我是Java和Apache库的新手,但除此之外我如何从CloseableHttpClient.execute()中提取上传进度?

我打算在命令行上记录进度,无论是发送的字节数还是百分比。

CloseableHttpClient client = HttpClients.createDefault();
HttpPost post = createHttpPost(); //just sets up the HttpPost object
HttpEntity entity = createHttpEntity(); //adds the multipart
post.setEntity(entity);

HttpResponse response;
try {
    getLog().info("Executing request.");
    response = client.execute(post);
} catch (ClientProtocolException e) {
    //handle
} catch (IOException e) {
    //handle
}

1 个答案:

答案 0 :(得分:0)

Post中使用的输出缓冲区实现中写的字节将为您提供progressMeter的数据....

使用调试和/或审查4.3 api文档,您需要确定Posts的缓冲区i / o的实际实现....有很多接口,可能需要一些时间才能找到,但是这里有一些关于POST和& CloseableHttpClient ...

SessionOutputBufferImpl是一个 - 注意I / O,您可以从中捕获关于Post动作的progressBar的指标。

您应该关注的另一个问题是BHttpConnectionBase