abler98
@abler98
Software Engineer

Android. Volley. java.io.IOException: unexpected end of stream on Connection. Как исправить?

Помогите, пожалуйста, исправить ошибку:
com.android.volley.NoConnectionError: java.io.IOException: unexpected end of stream on Connection{192.168.0.102:3000, proxy=DIRECT@ hostAddress=192.168.0.102 cipherSuite=none protocol=http/1.1} (recycle count=0)

Вот код отправки запроса:
private void loadMyInventory() {
        RequestQueue requestQueue = Volley.newRequestQueue(this);
        String url = "http://192.168.0.102:3000/api/loadMyInventory";
        JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
                new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                Toast.makeText(DepositeActivity.this, response.toString(), Toast.LENGTH_LONG).show();
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.d(TAG, "onErrorResponse: " + error.toString());
            }
        }) {
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                Map<String, String> headers = new HashMap<>();
                headers.put("Steam-Auth", getEncodedCredentials());
                return headers;
            }
        };
        requestQueue.add(request);
    }

Такая ошибка возникает только при добавлении заголовков к запросу. Пробовал отправлять запрос не через приложение - всё нормально.
P.S. Сервер на Node.js, может там нужно что-то поправить?
  • Вопрос задан
  • 2449 просмотров
Решения вопроса 1
abler98
@abler98 Автор вопроса
Software Engineer
Довольно глупо получилось: в методе getEncodedCredentials кодировалась строка в base64 и я по ошибке установил флаг Base64.DEFAULT вместо Base64.NO_WRAP, таким образом я получал строку с переносами.
private String getEncodedCredentials() {
        String result = Base64.encodeToString(credentials.toString().getBytes(), Base64.NO_WRAP);
        Log.d(TAG, "getEncodedCredentials: " + result);
        return result;
    }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы