同时齐射请求始终返回服务器错误

时间:2016-01-21 08:06:34

标签: android json android-volley

我正在尝试开发一个Android应用程序,其中我使用volley使用API​​命中服务器。我已经创建了一个单独的RequestQueue对象并一个接一个地发送多个JSON请求。当我发送第一个请求时,我收到JSON对象没有任何错误。然后我解析JSON,提取一些id并再次制作一个url并发出一个截击请求。这一次,我总是得到“com.android.volley.ServerError”。以下是我的代码:

JsonObjectRequest jReq = new JsonObjectRequest(Request.Method.GET, url, (String) null, new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject jsonObject) {
                        final VolleyParser vp = new VolleyParser();
                        ArrayList<Integer> searchIds = vp.parseJSONObject(jsonObject, kf, null);
                        r.cancelAll("saz");
                        for(Integer id : searchIds) {
                            final Fetch pf = new ProductFetch();
                            String url = pf.searchURL(id.toString());

                            JsonObjectRequest jReqNext = new JsonObjectRequest(Request.Method.GET, url, (String) null, new Response.Listener<JSONObject>() {
                                @Override
                                public void onResponse(JSONObject jsonArray) {
                                    Log.i("saz", "product rec");
                                    vp.parseJSONObject(jsonArray, pf, null);
                                }
                            }, new Response.ErrorListener() {
                                @Override
                                public void onErrorResponse(VolleyError volleyError) {
                                    Log.i("saz", "pro "+volleyError.toString());
                                }
                            });
                                    /**//*(Request.Method.POST, url, (String) null, new Response.Listener<JSONObject>() {
                                @Override
                                public void onResponse(JSONObject jsonObject) {
                                    Log.i("saz","product rec");
                                    vp.parseJSONObject(jsonObject, pf, null);
                                }
                            }, new Response.ErrorListener() {
                                @Override
                                public void onErrorResponse(VolleyError volleyError) {
                                    Log.i("saz", volleyError.toString());
                                }
                            });*/
                                    jReqNext.setRetryPolicy(new DefaultRetryPolicy(
                                            9000,
                                            DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
                                            DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

                            r.add(jReqNext);

                    }
                }}, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError volleyError) {
                          Log.i("saz", "Search "+volleyError.toString());
                    }
                });
                r.add(jReq);
        }

1 个答案:

答案 0 :(得分:0)

请详细说明服务器错误是什么,但看起来您收到Volley Server Timeout错误。请将请求超时时间增加到one min并查看结果。将超时增加为 yourRequest.setRetryPolicy(new DefaultRetryPolicy(60000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));