代码卡在http执行

时间:2015-07-06 14:55:17

标签: java apache-httpclient-4.x

我有一个代码,我正在使用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);

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

1 个答案:

答案 0 :(得分: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()是后者。