0

J'essaie d'obtenir le code d'état HTTP comme 400, 401 ou 500 du côté du serveur. J'ai essayé le code ci-dessous mais le message était null.Comment obtenir le message de réponse d'erreur de réseau du côté de serveur utilisant la bibliothèque de Volley?

new Response.ErrorListener() { 
    @Override 
    public void onErrorResponse(VolleyError error) { 
     Log.e("error fetched/////", "" + error.toString()); 
     // listener.onError(error.toString()); 
     String json = null; 
     NetworkResponse response = error.networkResponse; 
     int errcode = error.networkResponse.statusCode; 

     Log.e("errcode","errcode"+error.networkResponse.toString()); 

     Log.e("HttpStatus", String.valueOf(errcode)); 

     if(HttpStatus.SC_SWITCHING_PROTOCOLS==error.networkResponse.statusCode){ 
      Log.e("HttpStatus","HttpStatus"); 
     } 
     if (response != null && response.data != null) { 
      switch (response.statusCode) { 
       case 400: 
        json = new String(response.data); 
        json = trimMessage(json, "message"); 
        listener.onError(error.toString()); 
        Log.e("listenerpost", "listenerpost" + error.getMessage()); 
        break; 

       case 401: 
        json = new String(response.data); 
        json = trimMessage(json, "message"); 
        listener.onError(error.toString()); 
        Log.e("listener1", "listener" + error.networkResponse.toString()); 
        break; 

       case 500: 
        json = new String(response.data); 
        json = trimMessage(json, "message"); 
        listener.onError(error.toString()); 
        Log.e("listener500", "listener500" + error.networkResponse.toString()); 
      } 
      //Additional cases 
     } 
    } 
}) 

S'il vous plaît aidez-moi à résoudre ce problème.

+0

Quelle est la réponse que vous obtenez à partir de ceci: Log.e ("errcode", "errcode" + error.networkResponse.toString()); – djodjo

+0

errcode [email protected] c'est la réponse de cela. @djodjo – karthik

+0

pouvez faire un journal de json après "json = new String (response.data);" et pouvez-vous coller votre trimMessage aussi car il semble que le problème est là – djodjo

Répondre

0

Remplacer cette méthode:

@Override 
protected Response<byte[]> parseNetworkResponse(NetworkResponse response) { 
     // Here is what you need! 
     response.statuscode; 
} 
+0

Voici ce que sDecodeLock? @Robert – karthik

+0

Sry, vous pouvez supprimer cette ligne. Copier la pâte ..: D –

0

Les problèmes que vous essayez d'obtenir

error.getMessage()

alors que c'est nulle pour les erros vous êtes essayer parce que BasicNetwork fait:

else if (statusCode >= 400 && statusCode <= 499) { 
         // Don't retry other client errors. 
         throw new ClientError(networkResponse); 
        } else if (statusCode >= 500 && statusCode <= 599) { 
         if (request.shouldRetryServerErrors()) { 
          attemptRetryOnException("server", 
            request, new ServerError(networkResponse)); 
         } 

Fondamentalement erreur est juste une classe d'exception et le message pour ClientError et ServerError n'est pas défini.

les informations d'erreur du serveur est en

error.networkResponse

et la façon dont vous obtenez devrait obtenir le message du serveur

JSON = new String (response.data);