2015-10-25 11 views
11

Oto mój kod dla nagłówka InputStreamAndroid odpowiedź HttpURLConnection zwraca śmieci

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(); 

ale zwraca ciąg wartości śmieci tak „}”

nagłówek odpowiedź zawiera Content-Type: application/json; charset=UTF-8 więc próbowałem dodając

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

ale nie pomogło.

jego działanie doskonale na listonosza, więc wiem, że nie jest coś złego w obsłudze.

Czy ktoś może zaoferować pomoc?

+3

może to zip. – Ali

+0

Masz na myśli zwrócone dane? –

+0

Jakie jest kodowanie treści otrzymane z odpowiedzi? – QuakeCore

Odpowiedz

3

Niektóre usługi próbować kompresować dane, które produkują za pomocą parametrów nagłówka, takich jak:

Content-Encoding: SomeKindOfEncoding

Aby wyłączyć tę funkcję, spróbuj ustawić zaakceptować kodowanie:

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

Jeśli chcesz zapisać niektóre dane transferu w telefonie komórkowym, skorzystaj z:

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

tak, wygląda jak zip do mnie . Przynajmniej OP może potwierdzić, że istnieje nagłówek kompresji lub czy ta odpowiedź działa – Fabio

Powiązane problemy