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();
}
)
};
在这种特定情况下,我正在连接服务器以从数据库中获取一个对象。
当服务器端的对象存在时,java 上的代码命中了方法 OnSuccess
,然而,当服务器端,只是 return 一个 null
对象(没有错误在服务器上,它只是 returning 一个 null
对象,如果是这种情况)那么我的 java 代码正在命中“onError
”......
但对我来说这是完全错误的,因为我希望 onError 只在确实存在错误时发生(或者因为服务器已关闭,或者数据库已关闭,或者过程中发生了一些异常),不是当服务器 return 只是一个 null
对象时。
在 java 中解决此问题的最简单方法是什么?我不想将服务器更改为 return 我是一个空对象(不是 null
)....
谢谢
我认为 Volley 的 JsonObjectRequest
是专门为处理 JSON 对象而设计的。如果服务器 returns null
值那么调用 onError
回调是正常的,因为正如您在评论中所说, null
无法转换为 JSONObject
.
我的建议是使用不太严格的 Volley 对象请求,例如 StringRequest
。当 onSuccess
被命中并且结果不是 null
时,将结果代码转换为 JSONObject
:
JSONObject jsonResp = new JSONObject(response);
OnSuccess.accept(jsonResp);
反之,当response为null
时,那么你可以把它当作你的需要(当然也避免像上面那样创建JSON对象)
我有以下几行:
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
,然而,当服务器端,只是 return 一个 null
对象(没有错误在服务器上,它只是 returning 一个 null
对象,如果是这种情况)那么我的 java 代码正在命中“onError
”......
但对我来说这是完全错误的,因为我希望 onError 只在确实存在错误时发生(或者因为服务器已关闭,或者数据库已关闭,或者过程中发生了一些异常),不是当服务器 return 只是一个 null
对象时。
在 java 中解决此问题的最简单方法是什么?我不想将服务器更改为 return 我是一个空对象(不是 null
)....
谢谢
我认为 Volley 的 JsonObjectRequest
是专门为处理 JSON 对象而设计的。如果服务器 returns null
值那么调用 onError
回调是正常的,因为正如您在评论中所说, null
无法转换为 JSONObject
.
我的建议是使用不太严格的 Volley 对象请求,例如 StringRequest
。当 onSuccess
被命中并且结果不是 null
时,将结果代码转换为 JSONObject
:
JSONObject jsonResp = new JSONObject(response);
OnSuccess.accept(jsonResp);
反之,当response为null
时,那么你可以把它当作你的需要(当然也避免像上面那样创建JSON对象)