从Apache Commons HTTP Request获取页面内容

Chi*_*ins 9 java http apache-commons

所以我使用Apache Commons HTTP向网页发出请求.我不能为我的生活弄清楚如何从页面获取实际内容,我可以得到它的标题信息.如何从中获取实际内容?

这是我的示例代码:

HttpGet request = new HttpGet("http://URL_HERE/");

HttpClient httpClient = new DefaultHttpClient();
HttpResponse response = httpClient.execute(request);

System.out.println("Response: " + response.toString());
Run Code Online (Sandbox Code Playgroud)

谢谢!

小智 15

BalusC的评论会很好.如果您使用的是版本4或更高版本的Apache HttpComponents,您也可以使用一种便捷方法: EntityUtils.toString(HttpEntity);

这是代码中的样子:

HttpGet request = new HttpGet("http://URL_HERE/");
HttpClient httpClient = new DefaultHttpClient();
HttpResponse response = httpClient.execute(request);
HttpEntity entity = response.getEntity();
String entityContents = EntityUtils.toString(entity);
Run Code Online (Sandbox Code Playgroud)

我希望这对你有所帮助.

不确定这是否是由于不同的版本,但我不得不像这样重写它:

HttpGet request = new HttpGet("http://URL_HERE/");
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpResponse response = httpClient.execute(request);
HttpEntity entity = response.getEntity();
String entityContents = EntityUtils.toString(entity);
Run Code Online (Sandbox Code Playgroud)


Bal*_*usC 11

使用HttpResponse#getEntity()然后HttpEntity#getContent()获得它作为InputStream.

InputStream input = response.getEntity().getContent();
// Read it the usual way.
Run Code Online (Sandbox Code Playgroud)

请注意,HttpClient不是Apache Commons的一部分.它是Apache HttpComponents的一部分.