我正在使用HttpClient
连接到我的网络服务。我想实现一个简单的检查,如果应用程序可以连接到此Web服务。如果没有,我想要一个特定的消息出现。这就是我尝试实现它的方式:
public static JSONObject getJson(String url) {
StringBuilder builder = new StringBuilder();
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(url);
try {
HttpResponse response = client.execute(get);
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode();
if(statusCode == 200) {
HttpEntity entity = response.getEntity();
InputStream content = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(content));
String line;
while((line = reader.readLine()) != null) {
builder.append(line);
}
}
String json = builder.toString();
JSONObject jsonObject = new JSONObject(json);
return jsonObject;
} catch (Exception e) {
showErrorMessage();
}
return null;
}
有效。如果我没有互联网连接,则在尝试呼叫client.execute()
时会抛出异常,但问题是有时会立即抛出此异常,有时需要2分钟才会抛出它。
可能是什么原因?我认为它可能与尝试连接一段特定的时间有关,但我没有在应用程序中更改任何内容,而且这个时间总是有所不同。
答案 0 :(得分:1)
设置timeout参数以更快获得异常:
//以毫秒为单位的值
httpget.getParams().setParameter("http.socket.timeout", new Integer(5000));