[英]Android Volley Why does JsonObjectRequest does not call onResponse
[英]Android Volley JsonObjectRequest onResponse how to allow JSONObject as NULL
我有以下幾行:
Consumer<JSONObject> OnSuccess; // Defined somewhere else...
JsonParameters = jsonParameters; // Defined somewhere else...
String targetUrl = BaseService.BuildUrl(BASE_TARGET_URL, TargetMethod);
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest
(
Request.Method.POST,
targetUrl,
JsonParameters,
response -> {
OnSuccess.accept(response);
},
error -> {
Toast.makeText(BaseService.BaseContext,
"ERROR: COMS NOT WORKING", Toast.LENGTH_LONG).show();
}
)
};
在這種特定情況下,我到達服務器以從DB獲取對象。 當服務器端的對象存在時,java上的代碼命中OnSuccess
方法,但是,當服務器只返回一個null
對象時(服務器上沒有錯誤,它只是返回一個null
對象,如果這是case)然后我的java代碼命中“ onError
”....
但對我來說這是完全錯誤的,因為我希望onError恰好在出現錯誤時(或者因為服務器關閉,或者數據庫關閉,或者發生了一些異常),而不是在服務器返回時一個簡單的null
對象。
在java中解決這個問題最簡單的方法是什么? 我不想更改服務器以返回一個空對象(不為null
)....
謝謝
我認為Volley的JsonObjectRequest
專門用於處理JSON對象。 如果服務器返回null
值,則調用onError
回調是正常的,因為正如您在注釋中所述, null
無法轉換為JSONObject
。
我的建議是使用一個不太嚴格的Volley對象請求,例如StringRequest
。 當命中onSuccess
並且結果不為null
將生成的代碼轉換為JSONObject
:
JSONObject jsonResp = new JSONObject(response);
OnSuccess.accept(jsonResp);
相反,當響應為null
,您可以將其視為您的需求(當然也可以避免像上面那樣創建JSONObject)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.