2017-02-04 1 views
0

ich einen API-Aufruf mit folgenden Details habenWie JSON Fehlerreaktion in Volley bekommen onErrorResponse

URL: http://pankajservers.in/api/v1/AuthenticateUser mit Eingang params unter

Emailaddress und Passwort

wenn ich tippe falsche Anmeldeinformationen, ich bekomme unter JSON Antwort mit Statuscode: 403

{"Status":false,"Message":"Invalid Credentials. 5 attempts left.","Data":null} 

Im Folgenden finden Sie den Fehlerreaktionscode.

new Response.ErrorListener() 
{ 
    @Override 
    public void onErrorResponse(VolleyError error) 
    { 
     if (null != error.networkResponse) 
     { 
      Log.d(TAG + ": ", "Error Response code: " + error.networkResponse.statusCode); 
     } 
    } 
}); 

Gibt es eine Möglichkeit JSON-Antwort in diesem Codeblock zu bekommen?

versuchte ich diesen Beitrag: Volley handle onErrorResponse

Aber es scheint, es nie individuelle Anfrage erstellen wie diese können parseNetworkError

+0

u haben individuelle Anfrage erstellen ... –

Antwort

10

die Fehler drucken auf diesem Block Sie müssen nur die Antwort Bytes zu erhalten:

NetworkResponse networkResponse = error.networkResponse; 
if (networkResponse != null && networkResponse.data != null) { 
     String jsonError = new String(networkResponse.data); 
     // Print Error! 
} 
+0

einfache Lösung, Dank – Kalanidhi

+1

@Kalanidhi willkommen :) – Enzokie

0

Sie führen:

public class BaseRequest extends Request { 
    private static final String TAG = BaseRequest.class.getSimpleName(); 
    private final Gson gson = new Gson(); 


    private final Response.Listener listener; 

    public BaseRequest(String url, Response.Listener responseListener, Response.ErrorListener listener) { 
     super(Request.Method.GET, url, listener); 
     Log.e(TAG, "Requesting url : " + url); 
     this.listener = responseListener; 
    } 
    public BaseRequest(int method, String url, Response.Listener responseListener, Response.ErrorListener listener) { 
     super(method, url, listener); 
     Log.e(TAG, "Requesting url : " + url); 
     this.listener = responseListener; 
    } 

    @Override 
    public Response parseNetworkResponse(NetworkResponse response) { 

     try { 
      String json = null; 
      json = new String(
        response.data, 
        HttpHeaderParser.parseCharset(response.headers)); 
      JSONObject result = new JSONObject(json); 

      if (!result.getBoolean("Status")) 
       return Response.success(
         result.get("Data"), 
         HttpHeaderParser.parseCacheHeaders(response)); 
      else 
       return Response.error(new VolleyError(result.getString("Message"))); 
     } catch (UnsupportedEncodingException e) { 

      return Response.error(new ParseError(e)); 

     } catch (JsonSyntaxException e) { 

      return Response.error(new ParseError(e)); 

     } catch (JSONException e) { 
      return Response.error(new ParseError(e)); 
     } 


    } 

    @Override 
    protected VolleyError parseNetworkError(VolleyError volleyError) { 
     return volleyError; 
    } 

    @Override 
    protected void deliverResponse(Object response) { 
     listener.onResponse(response); 
    } 


} 

und machen Anfrage:

BaseRequest baseRequest = new BaseRequest(Request.Method.POST, url, new Response.Listener() { 
      @Override 
      public void onResponse(Object response) { 


      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       Log.e(TAG, "Error : " + error.getMessage()); 


      } 
     }) { 
      @Override 
      protected Map<String, String> getParams() throws AuthFailureError { 
       Map<String, String> params = new HashMap<>(); 

       //Your parameters 
       return params; 
      } 
     }; 

queue.add(baseRequest); 
0

Sie können eine Fehlermeldung auf ein Json Obj übertragen

ect
JSONObject jsonObject = new JSONObject(); 
    JsonObjectRequest JO = new JsonObjectRequest(Request.Method.POST,"URL String Here",jsonObject, new Response.Listener<JSONObject>() { 
     @Override 
     public void onResponse(JSONObject response) { 

     //Your Logic 

     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 

     try { 

     JSONObject JO = new JSONObject(error.toString()); 

     }catch (JSONException e){ 

     e.printStackTrace(); 
     } 

     } 
    }); 
Verwandte Themen