Volley获取请求:onResponse永远不会被调用

时间:2017-04-23 07:53:32

标签: android android-studio android-volley jsonobjectrequest

我对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
}

1 个答案:

答案 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();
    }
}