2016-09-08 2 views
2

Я использую Volley StringRequest, чтобы отправить запрос на мой сервер, и я вижу, что примерно в 20% случаев запрос выполняется успешно, но вместо onResponse вызывается onErrorResponse.Volley POST генерирует ошибку при успешном запросе

Вот мой код запроса:

StringRequest stringRequest = new StringRequest(Request.Method.POST, url, 
    new Response.Listener<String>() { 
    @Override 
    public void onResponse(String response) { 
     Log.d("App", "[MainActivity] post successful"); 

     // run very important routine only when post is successful 
    } 
    }, new Response.ErrorListener() { 
    @Override 
    public void onErrorResponse(VolleyError error) { 
     Log.e("App", "[MainActivity] failed to post"); 

     if (error == null) { 
     Log.e("App", "no error"); 
     } 
     else if (error.networkResponse != null) { 
     Log.e("App", String.valueOf(error.networkResponse.statusCode)); 
     if(error.networkResponse.data != null) { 
      try { 
      Log.e("App", new String(error.networkResponse.data, "UTF-8")); 
      } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
      } 
     } 
     } 
     else { 
     Log.e("App", "no network response"); 
     } 
    } 
}); 

requestQueue.add(stringRequest); 

20% времени я вижу:

E/App: [MainActivity] failed to post 
E/App: no network response 

но в моих журналах сервера я вижу 200 сообщений и данные, созданные пост является в моей базе данных.

Зачем Волейлировать ошибку на успешном посту?

UPDATE

Log.e("App", "error message: " + error.getMessage()); 

печатает: E/App: error message: null

ответ

1

Что сообщение об ошибке, возвращенное залпа? Проверьте его на volleyError.getMessage().

+0

его 'null'. то же самое для 'getLocalizedMessage' – Cbas

+0

@Cbas вы отслеживали ответ с сервера с помощью таких инструментов, как [Charles] (https://www.charlesproxy.com/)? Проверьте, что волейбол получает от сервера. – AssIstne

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