Android Java: 从 HttpUrlConnection 获取响应正文
Android Java: Get Response Body from HttpUrlConnection
我有一个 HttpUrlConnection
,我可以从中得到响应 Headers
,如下所示:
但是我尝试了很多方法来获得响应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
没有 任何具有正确字符(格式、编码和...)的更改中获取响应正文?
如果正文是 PNG 图像,它将是二进制数据,您应该使用输入流,而不是 reader。
更新:
示例:将图像存储在文件 "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);
}
}
我有一个 HttpUrlConnection
,我可以从中得到响应 Headers
,如下所示:
但是我尝试了很多方法来获得响应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
没有 任何具有正确字符(格式、编码和...)的更改中获取响应正文?
如果正文是 PNG 图像,它将是二进制数据,您应该使用输入流,而不是 reader。
更新:
示例:将图像存储在文件 "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);
}
}