8
votes

Loopj Android ASYNC HTTP - OnFailure non tiré

J'utilise la grande bibliothèque HTTP ASYNC de Loopj, mais j'ai rencontré un petit accroc.

Si l'utilisateur n'a aucune connexion Internet ou perd sa connexion, l'application ne reviendra rien. Cette partie est attendue, mais elle ne déclenche pas non plus la méthode OnFailure.

En outre, le code que j'ai utilisé lorsqu'il y a une connexion Internet fonctionne donc il n'y a pas de problème sur la fin du serveur.

Voici un code qui est dépouillé au minimum. Cela ne fonctionne pas non plus (j'ai aussi testé cela) xxx

merci, Ashley


0 commentaires

3 Réponses :


7
votes

Ouais, malheureusement, la bibliothèque Android Loopj n'est pas très bien conçue. Si vous implémentez le Autre em> OnFailure CODE> Callbacks L'un d'entre eux doit tirer:

@Override
public void onFailure(Throwable e) {
    Log.e(TAG, "OnFailure!", e);
}
@Override
public void onFailure(Throwable e, String response) {
    Log.e(TAG, "OnFailure!", e);
}
@Override
public void onFailure(Throwable e, JSONArray errorResponse) {
    Log.e(TAG, "OnFailure!", e);
}


1 commentaires

J'ai essayé ces plus l'échec JSONObject. Malheureusement, cela ne fonctionne toujours pas.



7
votes

Vous pouvez essayer ceci:

in asynchttprecest-> Makequestwithretries () Code>, ajoutez une capture à socketException code> Comme ceci: P>

while (retry) {
        try {
            makeRequest();
            return;
        } catch (UnknownHostException e) {
            if(responseHandler != null) {
                responseHandler.sendFailureMessage(e, "can't resolve host");
            }
            return;
        } catch (SocketException e){
            // Added to detect no connection.
            if(responseHandler != null) {
                responseHandler.sendFailureMessage(e, "can't resolve host");
            }
            return;
        } catch (IOException e) {
            cause = e;
            retry = retryHandler.retryRequest(cause, ++executionCount, context);
        } catch (NullPointerException e) {
            // there's a bug in HttpClient 4.0.x that on some occasions causes
            // DefaultRequestExecutor to throw an NPE, see
            // http://code.google.com/p/android/issues/detail?id=5255
            cause = new IOException("NPE in HttpClient" + e.getMessage());
            retry = retryHandler.retryRequest(cause, ++executionCount, context);
        }
    }


2 commentaires

C'est la solution! Il a été fusionné par loopj! Nice One NICOUS!


Bonjour NICOUS, comment pouvons-nous modifier ASYNCHTTPQUEST.CLASS s'il vous plaît aider. Y a-t-il un moyen de modifier ce fichier .Class à l'intérieur du fichier JAR



0
votes

Essayez ceci:

@Override
protected Object parseResponse(byte[] responseBody) throws JSONException {
    return super.parseResponse(responseBody);
}


0 commentaires