Android Volley的onResponse方法未执行

时间:2018-07-07 11:54:29

标签: android json rest http android-volley

我正在使用Volley进行网络连接并连接到我的REST API。以下代码显示了我的MainActivity的onCreate方法。在这里,我想对我的URL进行GET请求并接收JSON信息。但这不起作用。我在代码中做了不同的调试点。最后执行的是arrReq的初始化。 onResponse和onErrorResponse没有执行,我不知道怎么回事。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    setupToolBar();
    setupPagerAdapter();
    setupFloatingButton();
    getDeviceId();

    JsonArrayRequest arrReq = new JsonArrayRequest(com.android.volley.Request.Method.GET, "http://localhost:8888/api/entities", null,
            new Response.Listener<JSONArray>() {
                @Override
                public void onResponse(JSONArray response) {
                    // Check the length of our response (to see if there are any entities)
                    if (response.length() > 0) {
                        // There are entities so let's loop through them all.
                        for (int i = 0; i < response.length(); i++) {
                            try {
                                // Get each entity
                                JSONObject jsonObj = response.getJSONObject(i);
                                String locData = jsonObj.get("entity").toString();
                            } catch (JSONException e) {
                                // If there is an error then output this to the logs.
                                Log.e("Volley", "Invalid JSON Object.");
                            }

                        }
                    } else {
                        // There aren't any entities. So do nothing!
                    }

                }
            },

            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    // If there a HTTP error then add a note to our list.
                    Log.e("Volley", error.toString());
                }
            }
    );
}

当我在设备上的浏览器中执行url时,会收到JSON代码:

{
   "status":"success",
   "data":[
      {
         "entity":"(17,)"
      },
      {
         "entity":"(21,)"
      },
      {
         "entity":"(201,)"
      }
   ],
   "message":"Retrieved entities"
}

该日志未显示任何错误。

3 个答案:

答案 0 :(得分:0)

InProcSessionState

尝试这个

答案 1 :(得分:0)

可能是权限问题, 您是否通过以下代码添加了manifest.xml文件:

<uses-permission android:name="android.permission.INTERNET" /> 

答案 2 :(得分:0)

最后我明白了。问题是我得到一个JSONObject的回应,但得到一个JSONArrayRequest的回应。当我将其更改为JSONObjectRequest时,效果很好。