为了账号安全,请及时绑定邮箱和手机立即绑定

Android Volley JsonObjectRequest onResponse 如何允许

Android Volley JsonObjectRequest onResponse 如何允许

森林海 2021-06-09 17:43:26
我有以下几行: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)


查看完整回答
反对 回复 2021-06-23
  • 1 回答
  • 0 关注
  • 131 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信