Я использую 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
его 'null'. то же самое для 'getLocalizedMessage' – Cbas
@Cbas вы отслеживали ответ с сервера с помощью таких инструментов, как [Charles] (https://www.charlesproxy.com/)? Проверьте, что волейбол получает от сервера. – AssIstne