0

Ich versuche, den HTTP-Statuscode wie 400, 401 oder 500 von der Serverseite zu erhalten. Ich habe den folgenden Code ausprobiert, aber die Nachricht war null.Wie erhalten Sie die Netzwerkfehlerantwortnachricht von der Server-Seite mithilfe der Volley-Bibliothek?

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 
     } 
    } 
}) 

Bitte helfen Sie mir, dieses Problem zu beheben.

+0

Wie lautet die Antwort, die Sie erhalten: Log.e ("errcode", "errcode" + error.networkResponse.toString()); – djodjo

+0

errcode [email protected] Dies ist die Antwort darauf. @ djodjo – karthik

+0

kann ein Protokoll von json nach "json = new String (response.data);" und können Sie fügen Sie Ihre trimMessage auch, wie es scheint, das Problem ist dort – djodjo

Antwort

0

überschreiben diese Methode:

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

Hier was ist sDecodeLock? @Robert – karthik

+0

Sry, Sie können diese Zeile entfernen. Kopieren einfügen ..: D –

0

Die Probleme ist, dass Sie

error.getMessage()

während dies null für die erros zu bekommen versuchen Sie versuchen, weil BasicNetwork tut:

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)); 
         } 

Grundsätzlich ist der Fehler nur eine Exception-Klasse und die Nachricht für ClientError und ServerError ist nicht gesetzt.

die Fehlerinformationen vom Server ist in

error.networkResponse

und wie Sie es bekommen sollte die Nachricht vom Server

json = new String erhalten (antwort.data);

Verwandte Themen