2016-01-10 33 views
0

我已經存貨了一段時間,似乎像谷歌排球沒有按我期望的那樣工作。
我有一個JsonObject請求作爲爲此做好了準備:排球JsonObjectRequest不接受JsonObject作爲迴應

JSONObject jsonObject = new JSONObject(); 
    try { 
     jsonObject.put("auth-code", authCode); 
    } catch (JSONException ignored) { 
    } 
    JsonObjectRequest response = new JsonObjectRequest(UrlController.getGoogleOauthSendAuthCodeMethod(), UrlController.getGoogleOauthSendAuthCodeUrl(), jsonObject.toString(), onSuccess, onError); 
AppController.getInstance().addToRequestQueue(response, "REGISTER_USER_GOOGLE_OAUTH"); 

它只是向Google發出auth-code到我的服務器,並得到一個JSONObject作爲響應。

爲響應這一要求我找回這樣的:

{"data":{"user": 
       {"name":"name lastname", 
       "username":"someusername", 
       "email":"[email protected]"}, 
     "token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjQxNDIsImlzcyI6Imh0dHA6XC9cL2FzaG9qYXNoLm1pbFwvYXBpXC92MVwvYXV0aFwvZ29vZ2xlIiwiaWF0IjoxNDUyNDY3NTQ4LCJleHAiOjE0NTI0NzExNDgsIm5iZiI6MTQ1MjQ2NzU0OCwianRpIjoiMTNhNjU0MjcwMmQ2MmE5MDA1YTgyZTlkZTM3YjQxNGQifQ.YfQaGuhVTYXPizdt2AX8C0RAObUNoqJp4rglZPOGW7s", 
     "is_new_user":false 
     } 
} 

但凌空始終,進入onerror的部分。 我已經測試過服務器api,因爲它返回這個數據。

一些值得關注的事情:
當我回到這個JSON對象,而不檢查auth-code並從數據庫中只返回一個隨機的用戶,代碼進入onResponse回調。我已經登錄服務器,我也有auth-code,並正確地檢索響應。

那麼我在做什麼錯了?

+0

onError回調中引發的異常是什麼?只需登錄併發布您的問題。 – AnixPasBesoin

+0

我不確定這是因爲它沒有出現在你的代碼中,但是,當你將它添加到請求隊列時,你不應該使用「response」而不是「request」嗎? – AnixPasBesoin

+0

@AnixPasBesoin奇怪的是''error.networkResponse''爲null! 所以沒有狀態碼或數據我可以從那裏得到:( – Mehrdad

回答

0

找到原因,Volley time-out請求是2.5秒。
我在驗證auth-code,這比以前花費的時間還多。
爲了解決它在毫秒使用此代碼段爲您凌空Request

 response.setRetryPolicy(new DefaultRetryPolicy(15000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 

15000是requestTimeOut