无法使用Volley Library获取JSON

时间:2014-12-01 16:57:17

标签: android json android-volley

我使用Volley库来获取JSON。我无法使用在Android 2.3上运行的模拟器加载JSON,其他版本的一切都很好。我不知道为什么它不能获得JSON,特别是在2.3设备上。

JSON对象请求:

private void makeJsonObjectRequest() {
        pDialog = new ProgressDialog(MainActivity.this);
        pDialog.setMessage("Please wait...");
        pDialog.setCancelable(false);
        showpDialog();
        final JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.GET,
                urlJsonObj, null, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                try {
                    extractJSONArray(response.getJSONArray("Accommodation"), "accommodation");

                } catch (JSONException e) {
                    e.printStackTrace();
                }
                adapter.notifyDataSetChanged();
                hidepDialog();
            }
        }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                Log.d("Error: ", error.getCause().toString());
                error.printStackTrace();
                hidepDialog();
            }
        });
        AppController.getInstance().addToRequestQueue(jsonObjReq);
    }

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

好的,首先使用Gson库,它会让你的生活更轻松:

然后为你的回答制作POJO,例如

public class Accommodation {
    public String id;
    public String icon;
    public String name;
    public String nameEn;
    public String type;
    public String fotoLinks;
    public String address;
    public String workHours;
    public String description;
    public String descriptionEn;
    public String votes;
    public String voters;
    public String number;
    public String email;
    public String latitude;
    public String longitude;
}

现在组合所有pojo类以匹配您的服务器响应:

public class ServerResponse {
    public List<Accommodation> Accommodation;
    public List<CashMachines> Cash_machines; // assuming you have CashMachines as well like above
}

现在建立一个请求:

Request<ServerResponse> request = new GsonRequest<ServerResponse>(Request.Method.GET, 
     url,AnalyticsData.class, new Response.Listener<ServerResponse>() {
        @Override
        public void onResponse(ServerResponse response) {
               // user response here
               Log.d(">>", response.Accommodation.size()+"");
        }, errorListener);

现在使用此request

这是GsonRequest。确保从here下载gson jar文件。

请注意,现有代码将立即开始使用此URL http://njreteazza.lt.ricina.serveriai.lt/info.php,即您甚至不需要为所有返回的类型创建pojo类,只需在需要时添加pojo类。