Converting from HttpClient 3 to 4

时光怂恿深爱的人放手 提交于 2019-12-12 08:29:30

问题


I've managed to make changes to everything but the following:

HttpClient client;
HttpPost method;   
client = new DefaultHttpClient();
method = new HttpPost(url); 

InputStream rstream;
try {
    rstream = method.getResponseBodyAsStream();
} catch (IOException e) {
    return BadSpot(e.getMessage()); 
}

What I'm not sure of is what I should replace getResponseBodyAsStream() with.


回答1:


InputStream rstream;
try {
    HttpResponse response = client.execute(HttpHost, method);
    rstream = response.getEntity().getContent();
} catch (IOException e) {
    return BadSpot(e.getMessage()); 
}

above should do what you are asking.




回答2:


HttpResponse.getEntity(), followed by HttpEntity.getContent()




回答3:


The util class has some helpful methods:

EntityUtils.toString(response.getEntity());

There is also some useful stuff in the examples at apache's website




回答4:


Use EntityUtils and check the returned entity to be not null before consuming the entity:

InputStream rstream;
try {
    HttpResponse response = client.execute(HttpHost, method);

    rstream = Optional.ofNullable(httpResponse.getEntity())
    .map(e -> response.getContent()).orElse(null);

} catch (IOException e) {
    return BadSpot(e.getMessage()); 
}

NOTE: the InputStream here can be null and most of all you have to ensure that it's consumed before you actually close the response/release the connection.



来源:https://stackoverflow.com/questions/4598911/converting-from-httpclient-3-to-4

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!