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这里是一个例子 –