1

J'ai un HttpUrlConnection et je peux obtenir une réponse Headers de comme ci-dessous:Android Java: Get Body Réponse de HttpURLConnection

How to read full response from HttpURLConnection?

Mais j'ai essayé plusieurs façons d'obtenir la réponse Body sans succès. Par exemple:

br = new BufferedReader(new InputStreamReader((conn.getInputStream()))); 
sb = new StringBuilder(); 
String output; 
while ((output = br.readLine()) != null) { 
sb.append(output); 
return sb.toString(); 

Ou

Other ways... (With UTF-8 Encoding and ...) 

Le problème est que le résultat contient le caractère non valide. Par exemple, si la réponse est une image, je ne peux pas avoir l'image correcte et il contient des caractères non valides:

La correcte Image:

‰PNG 


IHDR è £ ؟£?b  pHYs  ڑœ 
OiCCPPhotoshop ICC profile xع‌SgTSé=÷قôBKˆ€”KoR RB‹€‘&*! Jˆ!،ظQءEEب ˆژژ€ŒQ,ٹ 

Le incorrect Image: (Ce que j'ai du corps de réponse)

<>�t:�t�R���k�ҥ��c�ƍZ�n�6mڤW^y��� 
6���/׼y�1���B��������ƍ; 
�˖-�'�|�+V��h�Z�e�3����%%%)--M�����/�� � �}h��m6�JKK��Oh�����㏽�QWW���T%&&*++��s���ph���III�<�%%%)<<�#�),,L+V����ý����TII����x�b=��*--�Z���M�2�l�nt�ө��|�{�z��ǵe���<??_�g�VVV���={��?^�|��wF����<͟?_���gmP: �:� �C�|���t�R���r:�z������{}���B���k���o�$ 
>\���^�?!!Ak׮լY�$�j�%Wq�ݮu��i���r:� 

Comment puis-je obtenir le corps de réponse de HttpUrlConnectionSANS tout change avec les caractères corrects (formatage, encodage et ...)?

Répondre

2

Si le corps est une image PNG, il s'agira de données binaires et vous devez utiliser le flux d'entrée, pas un lecteur.

MISE À JOUR:

Exemple: pour stocker l'image dans le fichier "myimage.png":

try (InputStream in = conn.getInputStream(); 
     OutputStream out = new FileOutputStream("myimage.png")) { 
    byte[] buf = new byte[4096]; 
    int n; 
    while ((n = in.read(buf)) > 0) { 
     out.write(buf, 0, n); 
    } 
} 
+0

Voulez-vous me fournir un s'il vous plaît code? Je ne peux pas comprendre ce que vous avez mentionné. –

+0

@JohnCroneh voici un exemple –