1

獲得響應的身體我有一個HttpUrlConnection,我可以從它那裏得到響應Headers象下面這樣:的Android的Java:從HttpURLConnection的

How to read full response from HttpURLConnection?

但我試過很多方法可以讓沒有成功響應Body。例如:

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

或者

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

的問題是,該結果包含無效字符。例如,如果響應是一個形象,我不能有正確的形象,它包含無效字符:

正確圖片:

‰PNG 


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

錯誤圖片:(我有什麼從響應體)

<>�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:� 

我怎樣才能得到HttpUrlConnection響應身體沒有任何正確的字符更改(格式,編碼和...)?

回答

2

如果主體是PNG圖像,它將是二進制數據,並且您期望使用輸入流而不是讀取器。

UPDATE:

例如:存儲文件 「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

請你給我一個代碼?我無法理解你提到的內容。 –

+0

@JohnCroneh這裏是一個例子 –