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. P>
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. P>
Voici un code qui est dépouillé au minimum. Cela ne fonctionne pas non plus (j'ai aussi testé cela) p> merci,
Ashley p> p>
3 Réponses :
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);
}
J'ai essayé ces plus l'échec JSONObject. Malheureusement, cela ne fonctionne toujours pas.
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);
}
}
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
Essayez ceci:
@Override protected Object parseResponse(byte[] responseBody) throws JSONException { return super.parseResponse(responseBody); }