Я создал простой запрос залпа для POST
//post request handler
public void PostRequest(final int queryType, String url, final String jsonData) {
StringRequest req = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
for (ApiRequestHandler commHandler : responseListeners) {
commHandler.responseHandler(response);
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
for (ApiRequestHandler commHandler : errorListeners) {
commHandler.errorHandler(error);
}
}
}) {
@Override
public byte[] getBody() {
return jsonData.getBytes();
}
@Override
public String getBodyContentType() {
return "application/json";
}
@Override
public Map<String, String> getHeaders() {
HashMap<String, String> headers = new HashMap<>();
headers.put("Content-Type", "application/json; charset=utf-8");
return headers;
}
};
getVolleyQueue().add(req);
}
Этот метод работает, когда я отправляю запрос в режиме отладки (устройство Android подключено к Android Studio), но не работает, когда я выпускаю приложениеи я получаю 400 ошибок.Я добавил интернет-разрешения.
Трудно отлаживать, когда приложение выпущено, я просто попытался вспомнить, когда получена ошибка.Трассировка стека такая, но мне не поможет.
com.android.volley.toolbox.BasicNetwork.a(Unknown Source:255),
com.android.volley.NetworkDispatcher.b(Unknown Source:37),
com.android.volley.NetworkDispatcher.run(Unknown Source:5)
Я потратил целый день на решение этой проблемы, несколько моих указателей:
Я мог бывидеть, что тело не заполнено, когда запрос отправляется из версии на стороне сервера, но печатает данные на уровне APK
Я также пытался jsonData.getBytes("utf-8");
, но не работал
Я использую implementation 'com.android.volley:volley:1.1.1'
Мне также нужны некоторые рекомендации по улучшению способов отладки выпущенных apks.Спасибо!