2016-01-21 11 views
0

Я пытаюсь разработать приложение для Android, в котором я нахожу сервер с помощью API, используя залп. Я создал объект SingleQ RequestQueue и отправил несколько запросов JSON один за другим. Когда я отправляю первый запрос, я получаю объект JSON без каких-либо ошибок. Затем я разбираю JSON, извлекая некоторые идентификаторы и снова создавая 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

Я не получаю ошибку TimeOut. У меня уже есть этот код. Я получаю эти журналы: com.android.volley.ServerError – Sarfaraz

+0

Что вы напечатали 'Volley erroer'? Попробуйте точку останова в 'onError' и посмотрите, что возвращается –

+0

com.android.volley.ServerError – Sarfaraz

Смежные вопросы