2016-01-21 107 views
0

我想开发中我打用凌空一个API服务器Android应用程序。我做了一个单例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); 
     } 

回答

0

请给予更多的解释服务器错误是什么,但它看起来像你所得到的VolleyServer Timeout错误。请将请求超时时间增加到one min并查看结果。增加超时为 yourRequest.setRetryPolicy(new DefaultRetryPolicy(60000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

+0

我没有得到超时错误。我已经集成了这些代码。 我得到这些日志: com.android.volley.ServerError – Sarfaraz

+0

什么的'凌空你打印erroer'?在'onError'尝试一个断点,看看返回的是什么 –

+0

com.android.volley.ServerError – Sarfaraz

相关问题