1

我正在使用HttpClient连接到我的网络服务。我想实现一个简单的检查应用程序是否可以连接到这个网络服务。如果没有,我希望出现一条特定的消息。这就是我尝试实现它的方式:

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 分钟才能引发异常。

可能是什么原因?我认为这可能与尝试连接特定时间有关,但我没有更改应用程序中的任何内容,而且这个时间无论如何都不同。

4

1 回答 1

1

设置 timeout 参数以更快地获取异常:

//以毫秒为单位的值

httpget.getParams().setParameter("http.socket.timeout", new Integer(5000));
于 2013-05-24T08:52:25.670 回答