我有一个代码,我正在使用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);
那么可以在一段时间后超时该语句,以便代码可以继续前进吗?
答案 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()
是后者。