0

基本上我试图让用户知道应用程序何时无法访问服务器/服务器,而他们的手机互联网/数据连接非常好。所以我在这里按照这篇文章设置了一个超时:How to set HttpResponse timeout for Android in Java

它工作得很好,除非当异常被正确捕获时,应用程序仍然崩溃而不是显示 Toast 消息并返回到应用程序屏幕。注意"Log.e("CONN TIMEOUT", e.toString());" 在 logcat 中正确记录为:“CONN TIMEOUT org.apache.http.conn.ConnectTimeoutException: Connect to /192.168.11.60:80 timed out”

根据要求,完整的 logcat:http://pastebin.com/rpe8iKRi

    // Making HTTP request
    try {

        HttpParams httpParameters = new BasicHttpParams();
        // Set the timeout in milliseconds until a connection is established.
        // The default value is zero, that means the timeout is not used. 
        int timeoutConnection = 3000;
        HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
        // Set the default socket timeout (SO_TIMEOUT) 
        // in milliseconds which is the timeout for waiting for data.
        int timeoutSocket = 5000;
        HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);

        // defaultHttpClient
        DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters);
        HttpPost httpPost = new HttpPost(url);
        httpPost.setEntity(new UrlEncodedFormEntity(params));

        HttpResponse httpResponse = httpClient.execute(httpPost);
        HttpEntity httpEntity = httpResponse.getEntity();
        is = httpEntity.getContent();

    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (ConnectTimeoutException e) {
        Toast.makeText(getApplicationContext(), "Server timeout", Toast.LENGTH_LONG).show();
        Log.e("CONN TIMEOUT", e.toString());
    } catch (SocketTimeoutException e) {
        Toast.makeText(getApplicationContext(), "Server timeout", Toast.LENGTH_LONG).show();
        Log.e("SOCK TIMEOUT", e.toString());
    } catch (IOException e) {
        e.printStackTrace();
    } catch (Exception e) {
        Log.e("OTHER EXCEPTIONS", e.toString());
    }
4

1 回答 1

2

解决了。缺少在函数末尾抛出异常 { 。呵呵

感谢@Alin 的好提示。

于 2013-01-18T04:12:52.423 回答