我对Android Studio很新,我试图使用Volley构建Get Request,Server响应是JsonObject。我用断点测试了代码,但我想知道为什么我不会跳到onResponse或为什么它不能工作。
这是我获取方法的代码:
target t1
{
Wants a.service, b.service, c.service
After a.service, b.service, c.service
}
target t2
{
Wants t1.target, x.service, y.service,z.service
After t1.target, x.service, y.service, z.service
}
答案 0 :(得分:1)
在@ GVillavani82评论时,您的onErrorResponse()
方法正文为空。尝试记录这样的错误
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("ERROR", "Error occurred ", error);
}
}
确保您在AndroidManifest.xml
文件中设置了以下权限,并且api网址正确。
<uses-permission android:name="android.permission.INTERNET"/>
JsonObjectRequest
类返回异步网络调用类。修改您的代码,如下所示。
// remove Account return type and use void
public void GetJsonObject(String urlExtension, String name, Context context) {
....
.... // other stuffs
....
JsonObjectRequest jsonObject = new JsonObjectRequest(Request.Method.GET, baseURL,null,
new Response.Listener<JSONObject>() {
// Takes the response from the JSON request
@Override
public void onResponse(JSONObject response) {
processResponse(response); // call to method
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("ERROR", "Error occurred ", error);
}
});
requestQueue.add(jsonObject);
}
现在创建另一个方法,如下面的
private void processResponse(JSONObject response) {
try {
final Account user = new Account("","");
JSONObject obj = response.getJSONObject("userObject");
String username = obj.getString("Username");
String email = obj.getString("Email");
user.setUsername(username);
user.setEmail(email);
} catch (JSONException e) {
e.printStackTrace();
}
}