Тайм-аут приложения Android даже после установленного тайм-аута AsyncHttpClient

Мое приложение получает тайм-аут даже после установленного тайм-аута. Пожалуйста, смотрите ниже:

    final int DEFAULT_TIMEOUT = 200000 * 1000000000;
 // Make RESTful webservice call using AsyncHttpClient object
     AsyncHttpClient client = new AsyncHttpClient();
    client.setTimeout(DEFAULT_TIMEOUT);
     //client.get("http://182.188.33.27:9009/useraccount/login/dologin",params ,new AsyncHttpResponseHandler() {
    client.get("http://koha.cdtl.com.sg/cgi-bin/koha/ilsdi.pl?service=AuthenticatePatron",params ,new AsyncHttpResponseHandler() {
         // When the response returned by REST has Http response code '200'
         @Override
         public void onSuccess(String response) {
             // Hide Progress Dialog
             prgDialog.hide();
             try {
                     // JSON Object
                     JSONObject obj = new JSONObject(response);
                     // When the JSON response has status boolean value assigned with true
                     if(obj.getBoolean("status")){
                         Toast.makeText(getApplicationContext(), "You are successfully logged in!", Toast.LENGTH_LONG).show();
                         // Navigate to Home screen
                         navigatetoHomeActivity();
                     } 
                     // Else display error message
                     else{
                         errorMsg.setText(obj.getString("error_msg"));
                         Toast.makeText(getApplicationContext(), obj.getString("error_msg"), Toast.LENGTH_LONG).show();
                     }
             } catch (JSONException e) {
                 // TODO Auto-generated catch block
                 Toast.makeText(getApplicationContext(), "Error Occured [Server's JSON response might be invalid]!", Toast.LENGTH_LONG).show();
                 e.printStackTrace();

             }
         }
         // When the response returned by REST has Http response code other than '200'
         @Override
         public void onFailure(int statusCode, Throwable error,
             String content) {
             // Hide Progress Dialog 
             prgDialog.hide();
             // When Http response code is '404'
             if(statusCode == 404){
                 Toast.makeText(getApplicationContext(), "Requested resource not found", Toast.LENGTH_LONG).show();
             } 
             // When Http response code is '500'
             else if(statusCode == 500){
                 Toast.makeText(getApplicationContext(), "Something went wrong at server end", Toast.LENGTH_LONG).show();
             } 
             // When Http response code other than 404, 500
             else{
                 Toast.makeText(getApplicationContext(), "Unexpected Error occcured! [Most common Error: Device might not be connected to Internet or remote server is not up and running]", Toast.LENGTH_LONG).show();
             }
         }
     });

Странно, иногда показывает желаемый результат:

Toast.makeText(getApplicationContext(), "Вы успешно вошли в систему!", Toast.LENGTH_LONG).show();

Но в основном:

Toast.makeText(getApplicationContext(), "Произошла непредвиденная ошибка! [Наиболее распространенная ошибка: возможно, устройство не подключено к Интернету или удаленный сервер не работает]", Toast.LENGTH_LONG).show();

Я также пытался очистить и перестроить проект, но это не помогло.

Любые предложения приветствуются.

Спасибо


person Dep    schedule 21.12.2015    source источник
comment
Logcat:12-21 03:41:15.127 25254-25531/com.prgguru.example I/System.out: [CDS]close[38467] 12-21 03:41:15.127 25254-25531/com.prgguru.example I /System.out: ex:java.net.SocketTimeoutException 12-21 03:41:15.128 25254-25531/com.prgguru.example W/System.err: java.net.SocketTimeoutException 12-21 03:41:15.128 25254- 25531/com.prgguru.example W/System.err: на java.net.PlainSocketImpl.read(PlainSocketImpl.java:497) 12-21 03:41:15.128 25254-25531/com.prgguru.example W/System.err : на java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:42)   -  person Dep    schedule 21.12.2015


Ответы (1)


В конце концов, удалось выяснить все различные сценарии ошибок только с помощью комбинаций error.getMessage(), error.toString() и error.getCause().

Toast.makeText(getApplicationContext(), "Код состояния:"+statusCode +"errmsg: "+error.getMessage(), Toast.LENGTH_LONG).show(); В настоящее время вы отображаете пользовательское сообщение. Сначала проверьте, какой код состояния ошибки и содержание ошибки. Существует много кодов состояния, которые вы обрабатываете только в двух случаях.

person Vinayak Shedgeri    schedule 21.12.2015
comment
Возвращаемый код состояния равен 0. Я думаю, это потому, что время ожидания запроса истекло. - person Dep; 21.12.2015
comment
Спасибо Винаяк за ваше предложение. После повторного написания кода я смог решить эту проблему, у меня было много таких сообщений, отображаемых в коде, я думаю, что это пошло на неправильный цикл. - person Dep; 31.12.2015