1

HttpPost で 3 秒後にタイムアウト例外をスローするようにアプリを設定しようとしています。ASyncTask からこのリクエストを実行しています。なんらかの理由で、存在しないドメインを指定しても、約 1 ~ 2 分ハングアップしてから、最後の例外がスローされます。タイムアウト例外が機能しないのはなぜですか?

protected Void doInBackground(String... params) {
            HttpPost httpPost = new HttpPost("http://hgfdhgfdhgfdhfgdhgfdhgfdhfgd.com");
            HttpParams httpParameters = new BasicHttpParams();
            HttpConnectionParams.setConnectionTimeout(httpParameters, 3000);
            HttpConnectionParams.setSoTimeout(httpParameters, 3000);
            DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters);
            try {
                httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                HttpResponse httpResponse = httpClient.execute(httpPost);
                HttpEntity httpEntity = httpResponse.getEntity();
                is =  httpEntity.getContent();  

            } catch(ConnectTimeoutException e){
                Log.e("Timeout Exception: ", e.toString());
            } catch(SocketTimeoutException ste){    
                Log.e("Timeout Exception: ", ste.toString());
            } catch (Exception e) {
                Log.e("log_tag", "Error in http connection "+e.toString());
            }

            try {
                BufferedReader br = new BufferedReader(new InputStreamReader(is));
                StringBuilder sb = new StringBuilder();
                String line = "";
                while((line=br.readLine())!=null){
                    sb.append(line+"\n");
                }
                is.close();
                result=sb.toString();
            } catch (Exception e) {
                Log.e("log_tag", "Error converting result "+e.toString());
            }
            return null;

        }
4

1 に答える 1

1

そこでfinishと呼ばないでください。

特定のエラー メッセージとともに例外がスローされた場合に null を返さないのはなぜですか。

postexecute メソッドでは、結果が null の場合に実行する必要があることをすべて実行します。

于 2012-07-10T18:11:38.730 に答える