Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我的Apache HttpComponents';什么是HttpGet请求挂起?_Java_Java 8_Apache Httpcomponents - Fatal编程技术网

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()