簡體   English   中英

Android Volley JsonObjectRequest onResponse如何允許JSONObject為NULL

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM