相关疑难解决方法(0)

Apache HTTPClient流式HTTP POST请求?

我正在尝试使用Apache HTTPClient构建"全双工"HTTP流式传输请求.

在我的第一次尝试中,我尝试使用以下请求代码:

URL url=new URL(/* code goes here */);

HttpPost request=new HttpPost(url.toString());

request.addHeader("Connection", "close");

PipedOutputStream requestOutput=new PipedOutputStream();
PipedInputStream requestInput=new PipedInputStream(requestOutput, DEFAULT_PIPE_SIZE);
ContentType requestContentType=getContentType();
InputStreamEntity requestEntity=new InputStreamEntity(requestInput, -1, requestContentType);
request.setEntity(requestEntity);

HttpEntity responseEntity=null;
HttpResponse response=getHttpClient().execute(request); // <-- Hanging here
try {
    if(response.getStatusLine().getStatusCode() != 200)
        throw new IOException("Unexpected status code: "+response.getStatusLine().getStatusCode());

    responseEntity = response.getEntity();
}
finally {
    if(responseEntity == null)
        request.abort();
}

InputStream responseInput=responseEntity.getContent();
ContentType responseContentType;
if(responseEntity.getContentType() != null)
    responseContentType = ContentType.parse(responseEntity.getContentType().getValue());
else
    responseContentType = DEFAULT_CONTENT_TYPE;

Reader responseStream=decode(responseInput, responseContentType);
Writer …
Run Code Online (Sandbox Code Playgroud)

java http apache-httpclient-4.x

6
推荐指数
1
解决办法
1万
查看次数

如何使用 Java 传输 HTTP 请求的正文

我有一个InputStream和将要输出的数据的大小(HTTP 请求的响应)。由于空间复杂性的原因,我无法阅读全文。我想要的是将数据直接发送到新的请求正文中。我尝试使用 OkHttp 执行此操作,但无法使其工作。我不知道有任何其他 HTTP 客户端可以做到这一点。

如果可能的话,我想避免与Socket. 有什么建议吗?

编辑:添加的限制是该解决方案必须与 Java 8 一起使用

java streaming http

5
推荐指数
1
解决办法
6827
查看次数

如何以流的形式获取httpclient响应

我正在使用 httpclient 4.5.5 我想获得高达 1 gb 的大文件作为响应。但好像

CloseableHttpResponse response = httpClient.execute(httpGet); HttpEntity entity = response.getEntity();

这将返回整个响应,因此在内存中包含整个响应并不好。有没有办法以流的形式获得响应?

java apache apache-httpclient-4.x

3
推荐指数
3
解决办法
9199
查看次数

标签 统计

java ×3

apache-httpclient-4.x ×2

http ×2

apache ×1

streaming ×1