[英]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圖像,它將是二進制數據,並且您應該使用輸入流,而不是閱讀器。
更新:
示例:將圖像存儲在文件“ 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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.