2013-07-10 114 views
0

我从来没有真正使用过Java中的http请求,我试图提出一个基本上重新创建此请求的请求http://supersecretserver.net:8080/http://whateverwebsite.com 此服务器接受任何网站并仅返回网页中的文本响应。Java HTTP请求卡住

的代码如下:

public String getText(String webPage) throws ParseException, IOException{ 
    HttpResponse response = null; 
    try {   
      HttpClient client = new DefaultHttpClient(); 
      HttpGet request = new HttpGet(); 
      request.setURI(new URI("http://supersecretserver.net:8080/" + "http://www.androidhive.info/2012/01/android-text-to-speech-tutorial/")); 
      response = client.execute(request); 
     } catch (URISyntaxException e) { 
      e.printStackTrace(); 
     } catch (ClientProtocolException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    String responseBody = "No text found on webpage."; 
    int responseCode = response.getStatusLine().getStatusCode(); 
    switch(responseCode) { 
    case 200: 
    HttpEntity entity = response.getEntity(); 
     if(entity != null) { 
      responseBody = EntityUtils.toString(entity); 
     } 
    } 
    System.out.println("Returning Response.."); 
    System.out.println(responseBody); 
    return responseBody; 
} 

这似乎停留在

response = client.execute(request); 

得到我不知道问题是什么,任何见解将是有益的。

回答

1

很可能是你的HttpClient不超时,您可以通过下面这个例子(从http://www.jayway.com/2009/03/17/configuring-timeout-with-apache-httpclient-40/)设置超时值

你只是要考虑的超时值,让你的感觉。


DefaultHttpClient httpClient = new DefaultHttpClient(); 
HttpParams params = httpClient.getParams(); 
HttpConnectionParams.setConnectionTimeout(httpParams, connectionTimeoutMillis); 
HttpConnectionParams.setSoTimeout(httpParams, socketTimeoutMillis); 

也为您的HttpClient不连接(因为它是被卡住),你也应该考虑到这是为什么发生的事情(也许你需要配置一个代理?)

+0

是的,我是假设这一点。谢谢,我会设置超时,如果超时,我只需要配置我的代理我想。 在任何情况下,这是完全有道理的,我只是想确保我没有尝试使用破碎的代码。 –