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"));
но не помогло.
он отлично работает на почтальоне, поэтому я знаю, что это не что-то не так с услугой.
Может ли кто-нибудь помочь?
Ответы
Ответ 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