Я очень новичок ie до Java dev, так что это может быть очень тупой вопрос.
Мне удалось запросить URL-адрес с помощью Volley и остановить его от автоматического следования перенаправлениям (изначально я получить 302, но мне нужно проверить заголовки ответа до 302). Я также могу видеть нужные мне заголовки. Проблема в том, что это действие остановки перенаправлений выдает ошибку BasicNetwork.performRequest: Unexpected response code 302 for https://example.com
Итак, все, что мне нужно сделать после этого, мне нужно будет ввести onErrorResponse
, что я считаю нехорошо. Из того, что я видел, решение состоит в том, чтобы переопределить класс BasicNetwork и изменить: if (statusCode < 200 || statusCode > 299)
на if (statusCode < 200 || statusCode > 299) && statusCode == 302
, но я действительно изо всех сил пытаюсь понять и написать эту часть.
Имеет ли это смысл? Как я могу переопределить этот класс?
Ниже приведен фрагмент моего кода:
public String loginUser(String mobilePayload) {
String url = "https://example.com/?mobilePayload=" + mobilePayload;
RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this, new HurlStack() {
@Override
//disable auto follow redirects
protected HttpURLConnection createConnection(URL url) throws IOException {
HttpURLConnection connection = super.createConnection(url);
connection.setInstanceFollowRedirects(false);
return connection;
}
});
Log.d("tag_debug", url);
StringRequest stringRequest = new StringRequest(Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("tag_debug","Response is: "+ response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
NetworkResponse response = error.networkResponse;
Log.d("tag_debug","That didn't work!");
Log.d("tag_debug",error.toString());
// GETTING THE HEADERS HERE
Log.d("tag_debug",response.headers.get("Location"));
}
}) {
@Override
protected Response<String> parseNetworkResponse(NetworkResponse response) {
Log.d("tag_debug", "Headers:" + response.headers);
return super.parseNetworkResponse(response);
}
};
requestQueue.add(stringRequest);
}