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,ٹ 

誤った画像:(私が持っているもの私はどのなしHttpUrlConnectionからのレスポンスボディを取得できます)レスポンスボディから

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

正しい文字(書式設定、エンコーディングなど)で変更されますか?

答えて

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ここに例があります –