我正在通过 JSON 从我的服务器检索数据Volley
JSONObjectRequest
来实现这一点。获得 JSON 响应后,我想将它保存到一个变量中并在整个活动中使用它。下面是我的代码示例:
private String description;
private int status;
private boolean validateIntegrationCode() {
if (checkNetwork()) {
String url = "sample url";
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
status = response.getInt("status");// ** STATUS IS 1 HERE **
description = response.getString("description");
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});
mQueue.add(request);
} else {
// No network, check from SQLite
}
if (status == 1) { // ** STATUS IS 0 HERE **
return true;
} else {
return false;
}
}
当我status
在返回true
or之前检查值时false
, 的值status
现在是 0 并且description
也返回null
。
我的 JSON 响应:
{"status":1,"description":"Integration code is valid"}
截击请求是一个异步调用。在收到响应之前,它不会阻止代码。因此,正在发生的事情是您if(status==1)
在收到齐射响应之前检查是否正在发生。因此为0。
你应该做什么:
1) 使您的函数返回类型为空。
2)在 中onResponse
,输入代码
if (status == 1) { // ** STATUS IS 0 HERE **
statusBoolean = true;
} else {
statusBoolean = false;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句