2016-09-08 29 views
2

我使用Volley StringRequest向我的服務器發送查詢,並且我發現在大約20%的情況下,請求成功,但調用onErrorResponse而不是onResponseVolley POST在成功請求時拋出錯誤

這裏是我的請求代碼:

E/App: [MainActivity] failed to post 
E/App: no network response 

但在我的服務器日誌我看到後產生的200消息和數據是:我看的時候

StringRequest stringRequest = new StringRequest(Request.Method.POST, url, 
    new Response.Listener<String>() { 
    @Override 
    public void onResponse(String response) { 
     Log.d("App", "[MainActivity] post successful"); 

     // run very important routine only when post is successful 
    } 
    }, new Response.ErrorListener() { 
    @Override 
    public void onErrorResponse(VolleyError error) { 
     Log.e("App", "[MainActivity] failed to post"); 

     if (error == null) { 
     Log.e("App", "no error"); 
     } 
     else if (error.networkResponse != null) { 
     Log.e("App", String.valueOf(error.networkResponse.statusCode)); 
     if(error.networkResponse.data != null) { 
      try { 
      Log.e("App", new String(error.networkResponse.data, "UTF-8")); 
      } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
      } 
     } 
     } 
     else { 
     Log.e("App", "no network response"); 
     } 
    } 
}); 

requestQueue.add(stringRequest); 

20%在我的數據庫中。

Volley爲什麼會在成功的帖子上拋出錯誤?

UPDATE

Log.e("App", "error message: " + error.getMessage()); 

打印:E/App: error message: null

回答

1

什麼是錯誤消息的凌空回來了?通過volleyError.getMessage()進行檢查。

+0

其「null」。 'getLocalizedMessage'也一樣 – Cbas

+0

@Cbas你有沒有使用[Charles](https://www.charlesproxy.com/)這樣的工具監視服務器的響應?檢查從服務器獲得的什麼樣的排球。 – AssIstne