2015-12-21 81 views
-1

我越来越状态400和服务器提供了一些回应,在那里我可以得到消息凌空手柄onErrorResponse

@Override 
public void onErrorResponse(VolleyError error) { 
     NetworkResponse errorRes = error.networkResponse; 
     Log.d(TAG, errorRes.statusCode+""); 
} 

我怎样才能得到消息的服务器给我。基本上除了200以外,还会给出errorresponse。现在我可以在哪里获得我收到的数据?

errorRes.data也给错误的信息。

回答

0

如果您能够在服务器上点击api,这意味着将会调用OnResponse。 OnErrorResponse被调用,当一些凌乱的错误,如没有互联网连接或如果URL无效发生。

如果您想知道哪些消息来自服务器,请解析您在OnResponse中获得的响应。

+0

事情是响应是当我正在做适当的请求,时间服务器给出状态码200,但如果我通过错误的参数然后它给400和它去onErrorResponse – andro

+0

如果参数是错误的,该响应来自服务器端。 如果您在ErrorResponse中获得响应,则意味着存在其他一些错误,无论是互联网连接还是尝试打击api的方式。 –

+0

然后当状态码不是200时,我可以得到响应? – andro

0

试试这个:

@Override 
public void onErrorResponse(VolleyError error) { 

     NetworkResponse errorRes = error.networkResponse; 
     String stringData = ""; 
     if(errorRes != null && errorRes.data != null){ 
      stringData = new String(errorRes.data,"UTF-8"); 
     } 
     Log.e("Error",stringData) 
} 
1

您可以通过覆盖parseNetworkError为以下(如果可用)解析错误消息:

  @Override 
      protected VolleyError parseNetworkError(VolleyError volleyError) { 
       String json; 
       if (volleyError.networkResponse != null && volleyError.networkResponse.data != null) { 
        try { 
         json = new String(volleyError.networkResponse.data, 
           HttpHeaderParser.parseCharset(volleyError.networkResponse.headers)); 
        } catch (UnsupportedEncodingException e) { 
         return new VolleyError(e.getMessage()); 
        } 
        return new VolleyError(json); 
       } 
       return volleyError; 
      } 

希望它能帮助!