Подтвердить что ты не робот

Android HTTPUrlConnection ответ возвращает мусор

Вот мой код для заголовка входного потока

mResponseCode = connection.getResponseCode();

mError = mResponseCode != 200 && mResponseCode != 201 && mResponseCode != 202;

if (mError) {
    inputStream = connection.getErrorStream();
} else {
    inputStream = connection.getInputStream();
}
inputStreamReader = new InputStreamReader(inputStream);
bufferedReader = new BufferedReader(inputStreamReader);

String inputLine;
final StringBuilder builder = new StringBuilder();

while ((inputLine = bufferedReader.readLine()) != null)
    builder.append(inputLine);

resultStr = builder.toString();

но строка возвращает значения мусора, такие как ""

Заголовок ответа включает Content-Type: application/json; charset=UTF-8, поэтому я попытался добавить

inputStreamReader = new InputStreamReader(inputStream, Charset.forName("UTF-8"));

но не помогло.

он отлично работает на почтальоне, поэтому я знаю, что это не что-то не так с услугой.

Может ли кто-нибудь помочь?

4b9b3361

Ответ 1

Некоторые службы пытаются сжать данные, которые они производят, с помощью параметров заголовка, например:

Content-Encoding: SomeKindOfEncoding

Чтобы отключить эту функцию, попробуйте установить кодировку accept:

connection.setRequestProperty("Accept-Encoding", "identity");

Если вы хотите сохранить некоторые данные передачи на мобильном телефоне, используйте следующее:

connection.setRequestProperty("Accept-Encoding", "gzip"); //optional forcing gzip
//...
inputStream = new GZIPInputStream(connection.getInputStream());
//rest of the code