2015-10-25 13 views
11

Ecco il mio codice per l'intestazione InputStreamrisposta HttpURLConnection Android ritorna spazzatura

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

ma la stringa restituisce i valori della spazzatura come questo "}"

L'intestazione di risposta include Content-Type: application/json; charset=UTF-8 così ho provato ad aggiungere

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

ma non ha aiutato.

funziona perfettamente su postino quindi so che non c'è qualcosa di sbagliato nel servizio.

Qualcuno può offrire assistenza?

+3

forse è zip. – Ali

+0

Intendi i dati restituiti? –

+0

Qual è la codifica del contenuto che ottieni dalla risposta? – QuakeCore

risposta

3

Alcuni servizio tentano di comprimere i dati che producono con l'aiuto dei parametri header come:

Content-Encoding: SomeKindOfEncoding

Per disattivare questa funzione tenta di impostare l'accettare codifica:

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

Se si desidera salvare alcuni dati di trasferimento sul telefono cellulare, utilizzare quanto segue:

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

sì, sembra come zip per me . Almeno OP potrebbe confermare se c'è un'intestazione di compressione o se questa risposta funziona – Fabio