【问题标题】:Code getting stuck at http execute代码卡在 http 执行
【发布时间】:2015-09-23 18:57:19
【问题描述】:

我有一个代码,我正在使用 http post,它工作正常,但有时它卡在 http.execute 并且在等待响应时没有继续。那么在这种情况下可以做些什么呢?

我没有收到任何说无法连接或类似的错误。它只是卡在那里。

这是我的代码

HttpClient client = new DefaultHttpClient();
HandleWebserviceCallPojo pojo = getpojo(sessionId);
String url = "http:x.y.z:8080//"; // my url
logger.info("------------------------------------------------------------");
logger.info("Sending response to client's url..");
logger.info("url-->" + url);

HttpPost post = new HttpPost(url.trim());
post.setEntity(new UrlEncodedFormEntity(urlParameters));
HttpResponse response = client.execute(post);
//the code gets stucked at client.execute and there is no way out after that
logger.info("------------------------------------------------------------");
logger.info("response" + response);

那么是否可以在一段时间后将该语句超时,以便代码可以继续前进?

【问题讨论】:

    标签: java apache-httpclient-4.x


    【解决方案1】:

    看看this question。它显示了如何设置超时。

    来自Laz:

    import org.apache.http.client.HttpClient;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.params.BasicHttpParams;
    import org.apache.http.params.HttpConnectionParams;
    import org.apache.http.params.HttpParams;
    ...
    // set the connection timeout value to 30 seconds (30000 milliseconds)
    final HttpParams httpParams = new BasicHttpParams();
    HttpConnectionParams.setConnectionTimeout(httpParams, 30000);
    client = new DefaultHttpClient(httpParams);
    

    还有来自用户benvolioT的有用评论

    Apache 的HttpClient 有两个独立的超时:一个是等待建立 TCP 连接的时间,另一个是等待后续数据字节的时间。 HttpConnectionParams.setConnectionTimeout() 是前者,HttpConnectionParams.setSoTimeout() 是后者。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-23
      • 1970-01-01
      • 1970-01-01
      • 2012-12-04
      • 2019-04-21
      相关资源
      最近更新 更多