Java 为什么我的Apache HttpComponents';什么是HttpGet请求挂起?
我有这个代码,它工作得很好:Java 为什么我的Apache HttpComponents';什么是HttpGet请求挂起?,java,java-8,apache-httpcomponents,Java,Java 8,Apache Httpcomponents,我有这个代码,它工作得很好: System.out.println("Fetching..."); CloseableHttpClient client = HttpClients.createDefault(); HttpGet request = new HttpGet("http://blogs.reuters.com/talesfromthetrail/2012/06/26/obama-letter-brings-democratic-donors-out-of-the-woodwork
System.out.println("Fetching...");
CloseableHttpClient client = HttpClients.createDefault();
HttpGet request = new HttpGet("http://blogs.reuters.com/talesfromthetrail/2012/06/26/obama-letter-brings-democratic-donors-out-of-the-woodwork/");
CloseableHttpResponse response = client.execute(request);
HttpEntity entity = response.getEntity();
if (entity != null) {
System.out.println("Fetched!");
return EntityUtils.toString(entity);
}
但显然不建议使用EntityUtils
将实体转换为字符串。因此,我尝试使用StringBuffer
,就像示例代码那样:
System.out.println("Fetching...");
CloseableHttpClient client = HttpClients.createDefault();
HttpGet request = new HttpGet("http://blogs.reuters.com/talesfromthetrail/2012/06/26/obama-letter-brings-democratic-donors-out-of-the-woodwork/");
CloseableHttpResponse response = client.execute(request);
HttpEntity entity = response.getEntity();
if (entity != null) {
System.out.println("Fetched!");
BufferedReader rd = new BufferedReader(new InputStreamReader(entity.getContent()));
StringBuffer result = new StringBuffer();
String line = rd.readLine();
while (line != null) {
result.append(line);
line = rd.readLine();
}
return result.toString();
}
它挂起来了!
“Fetched!”
print语句甚至无法执行。我是一个Java noob,所以我不知道为什么会这样。我应该如何调试它?您使用的是哪个版本?我用Java1.8.0ȁ51和HTTPClient 4.5进行了尝试,效果很好可能会指示它挂起的原因,因为连接到源或检索数据都将超时并引发异常。另一种可能性是,如果响应不包含正文,则response.getEntity()返回null。请先尝试打印响应代码:response.getStatusLine().getStatusCode()
您使用的是哪个版本?我用Java1.8.0ȁ51和HTTPClient 4.5进行了尝试,效果很好可能会指示它挂起的原因,因为连接到源或检索数据都将超时并引发异常。另一种可能性是,如果响应不包含正文,则response.getEntity()返回null。首先尝试打印响应代码:response.getStatusLine().getStatusCode()