2015-12-21 83 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; 
      } 

希望它能幫助!