我不認爲實際上可以從JSONException中檢索JSON字符串,所以最終我從BNK得到了答案,並且在這種情況下做了可能最簡單的解決方案。
這個技巧似乎是要接收一個StringRequest,並且一旦知道有一個有效的字符串響應,就執行JSON處理。以下是我的項目中的外觀。
StringRequest request = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
activity.hideProgress();
try {
Object json = new JSONTokener(response).nextValue();
if (json instanceof JSONArray) {
// an array is a valid result
dataModel.loadData((JSONArray)json);
} else if (json instanceof JSONObject) {
// this is an error
showErrorMessageIfFound((JSONObject)json);
}
} catch (JSONException error) {
error.printStackTrace();
}
refreshTable();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
activity.hideProgress();
showVolleyError(error);
// check for a JSONObject parse error
}
});
首先有一個StringRequest來檢索響應。錯誤響應顯示我的自定義錯誤處理器的錯誤。成功響應解析JSON並使用最終結果向最終用戶顯示正確的內容。
您的錯誤是否與'HTTP 200'一起出現,還是您獲得了特定的狀態碼? – Androiderson