Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android截取JSONObject请求onResponse如何允许JSONObject为NULL_Java_Android_Android Volley - Fatal编程技术网

Java Android截取JSONObject请求onResponse如何允许JSONObject为NULL

Java Android截取JSONObject请求onResponse如何允许JSONObject为NULL,java,android,android-volley,Java,Android,Android Volley,我有以下几行: Consumer<JSONObject> OnSuccess; // Defined somewhere else... JsonParameters = jsonParameters; // Defined somewhere else... String targetUrl = BaseService.BuildUrl(BASE_TARGET_URL, TargetMethod); JsonObjectRequest jsonObjectRequest = n

我有以下几行:

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();
            }
    )
};
Consumer OnSuccess;//在其他地方定义。。。
JsonParameters=JsonParameters;//在其他地方定义。。。
字符串targetUrl=BaseService.BuildUrl(BASE\u TARGET\u URL,TargetMethod);
JsonObjectRequest JsonObjectRequest=新JsonObjectRequest
(
Request.Method.POST,
targetUrl,
JsonParameters,
答复->{
OnSuccess.accept(响应);
},
错误->{
Toast.makeText(BaseService.BaseContext,
“错误:通讯不工作”,Toast.LENGTH_LONG.show();
}
)
};
在这个特定的例子中,我正在到达服务器以从数据库获取一个对象。 当服务器端的对象存在时,java上的代码点击方法
OnSuccess
,然而,当服务器简单地返回
null
对象(服务器上没有错误,如果是这种情况,它只是返回
null
对象)时,我的java代码点击的是“
onError

但对我来说,这显然是错误的,因为我希望onError只发生在真正有错误的时候(或者因为服务器关闭,或者DB关闭,或者发生了一些异常),而不是当服务器返回一个简单的
null
对象时

用java解决这个问题最简单的方法是什么?我不想更改服务器以返回空对象(不是
null


谢谢

我认为Volley的
JsonObjectRequest
是专门为处理JSON对象而设计的。如果服务器返回
null
值,则调用
onError
回调是正常的,因为正如您在评论中所说,
null
无法转换为
JSONObject

我的建议是使用不太严格的凌空对象请求,例如
StringRequest
。当点击
onSuccess
并且结果不是
null
时,将生成的代码转换为
JSONObject

JSONObject jsonResp = new JSONObject(response);
OnSuccess.accept(jsonResp);

相反,当响应为
null
时,您可以根据需要处理它(当然避免像上面那样创建JSONObject)

,但如果服务器返回
null
error
变量的内容是什么?@Lino Value null类型org.json.JSONObject$1无法转换为JSONObject下面的答案后有任何反馈?最后,我的解决方案是按照您的建议使用StringRequest。我的代码基于以下答案: