2016-09-03 2 views
0

Ich verwende Loopj, um eine Anfrage und Antwort zu bekommen. Aber es scheint, dass Callback-Methode nicht ordnungsgemäß aufgerufen wird, wenn eine Internetverbindung ohne Daten. Wenn ich auf ein Listview seinen folgenden Code ausführen:Callback-Methode für AsyncHttpClient, wenn Internetverbindung ohne Daten android Loopj

AsyncHttpClient client = new AsyncHttpClient(); 
      client.get("http://www.google.com", new AsyncHttpResponseHandler() { 

       @Override 
       public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) { 
        System.out.println("onSuccess"); 
       } 

       @Override 
       public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) { 
        System.out.println("onFailure"); 
       } 

      }); 

Problem ist, dass, wenn Internet verbunden, aber ohne Daten dann onFailure() nicht selbst nach Timeout-Einstellungen aufrufen.

Ich habe mit folgenden Timeout-Einstellungen in Client versucht:

client.setTimeout (5000);

oder

client.setConnectTimeout (5000);

oder

client.setResponseTimeout (5000);

oder

client.setMaxRetriesAndTimeout (5,1000);

Keines dieser zwingen, onFailure() aufzurufen. Meine Frage ist, gibt es eine Möglichkeit, onFailure() zu rufen, wenn Internetverbindung ohne Daten oder andere Callback in Loopj, die nach Timeout ausgelöst?

Antwort

0

Es gibt anderen Rückruf für AsyncHttpClient, die wichtigsten sind

AsyncHttpClient client = new AsyncHttpClient(); 
    client.get("http://www.google.com", new AsyncHttpResponseHandler() { 

     @Override 
     public void onStart() { 
      super.onStart(); 
     } 

     @Override 
     public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) { 
      System.out.println("onSuccess"); 
     } 

     @Override 
     public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) { 
      System.out.println("onFailure"); 
     } 

     @Override 
     public void onFinish() { 
      super.onFinish(); 
      System.out.println("onFinish"); 
     } 
    }); 

In Ihrem Fall können Sie den onFinish() Rückruf verwenden, das das Ende der wed Anfrage auch wenn ihr Erfolg oder Misserfolg geben ..

Hoffe, das hilft

+0

Ich habe versucht, aber onFInish() wird nicht aufgerufen, wenn eine Internetverbindung ohne Daten. Es fordert solange an, bis Internetdaten verfügbar sind. – 0xalihn

+0

Hält an? Hab dich nicht verstanden. Kannst du bitte mehr erklären. Oder post screenshot oder sowas? @ 0xAliHn – Sanoop

+0

Ich meine onFinish() nach entweder onSuccess() oder OnFailure() aufgerufen. In meinem Fall Internetverbindung ohne Daten sowohl onSuccess() und OnFailure() nicht ausgelöst werden. OnFinish() wird also auch nicht aufgerufen. – 0xalihn

Verwandte Themen