我有以下幾行: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(); } )};在這種特定情況下,我到達服務器以從數據庫獲取對象。當服務器端的對象存在時,java上的代碼命中方法OnSuccess,但是,當服務器端,簡單地返回一個null對象(服務器端沒有錯誤,它只是返回一個null對象,如果是這種情況)那么我的 Java 代碼正在打“ onError”....但對我來說,這是完全錯誤的,因為我希望 onError 只在確實發生錯誤時發生(或者因為服務器關閉,或者數據庫關閉,或者沿途發生了一些異常),而不是在服務器返回時發生一個簡單的null對象。在java中解決這個問題的最簡單方法是什么?我不想更改服務器以返回一個空對象(不是null)...謝謝
1 回答

料青山看我應如是
TA貢獻1772條經驗 獲得超8個贊
我認為 VolleyJsonObjectRequest
是專門為處理 JSON 對象而設計的。如果服務器返回null
值,onError
則調用回調是正常的,因為正如您在評論中所說,null
無法轉換為JSONObject
.
我的建議是使用不太嚴格的 Volley 對象請求,例如StringRequest
. 當onSuccess
被擊中并且結果未null
轉換時,將結果代碼轉換為JSONObject
:
JSONObject jsonResp = new JSONObject(response); OnSuccess.accept(jsonResp);
相反,當響應為 時null
,您可以將其視為您的需要(當然避免像上面那樣創建 JSONObject)
添加回答
舉報
0/150
提交
取消