android - Volley JsonObjectRequest 响应
问题描述
我正在通过 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"}
解决方案
我已将我的答案更新如下,
private int status;
private String description;
private void callRequest() {
// Initialize a new RequestQueue instance
RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);
// Initialize a new JsonObjectRequest instance
JsonObjectRequest jsonObjectRequest = 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");
checkStatus();
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
}
);
// Add JsonObjectRequest to the RequestQueue
requestQueue.add(jsonObjectRequest);
}
private void checkStatus(){
if(status == 1){
// do what do you need to do id status == 1
}else{
// do what do you need to do id status == 0
}
}
试试这个,让我知道更新谢谢!
推荐阅读
- appsync-apollo-client - 在 apollo-client 中执行带有 optimiticResponse 的突变时,如何绕过“Missing field”警告?
- aws-lambda - 使用 AWS Api Gateway 时返回错误错误
- asp.net-core - 用户定义结构的属性未在 .NET Core 3.0 Web API 中反序列化(适用于 .NET Core 2.2)
- coldfusion - 语法奇怪的内存不足增量运算符
- javascript - 将 Javascript 数组转换为 JSON 对象
- amazon-web-services - 使用 Systems Manager 在 Windows EC2 实例上运行 AWS CLI 命令
- c# - 为什么自定义运行设置文件上的代码覆盖率返回排除的路径
- python - 将 Python timedelta 对象映射到数值区间
- sql - 即使在 group by 中不存在,如何检索数据?
- android - Kotlin - 从原始资源共享音频文件