2016-05-09 6 views
0

私は開発中のAndroidではありません。私はサーバーからJSONオブジェクトをダウンロードしたかったのですが、これだけのコードしか見つかりませんでした:Android - HTTP応答の文字で表したサイズ

private String downloadUrl(String myurl) throws IOException { 
     InputStream is = null; 
     // Only display the first 500 characters of the retrieved 
     // web page content. 
     int len = 500; 

     try { 
      URL url = new URL(myurl); 
      HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
      conn.setReadTimeout(10000 /* milliseconds */); 
      conn.setConnectTimeout(15000 /* milliseconds */); 
      conn.setRequestMethod("GET"); 
      conn.setDoInput(true); 
      // Starts the query 
      conn.connect(); 
      int response = conn.getResponseCode(); 
      Log.d("ServerConnection", "The response is: " + response); 
      is = conn.getInputStream();; 
      //is. 
      // Convert the InputStream into a string 
      String contentAsString = readIt(is, len); 
      return contentAsString; 

      // Makes sure that the InputStream is closed after the app is 
      // finished using it. 
     } catch (MalformedURLException e) { 
      // 
      return "error"; 
     } catch (IOException e) { 
      // 
      return "error"; 
     } finally { 
      if (is != null) { 
       is.close(); 
      } 
     } 
    } 

これはうまく動作しますが、わかりません。しかしそれにはint len = 500があり、返されたjsonは500文字に切り詰められています。私は大きな数に変えようとしましたが、最後にスペースがあります。 InputSteamに含まれる文字列のサイズをどのように知ることができますか? YoutのはStringにInputStreamを変換するか、直接入力ストリームからオブジェクトを読み取るためにGsonを使用するApache Commons IO IOUtils.toStringを使用することができます

答えて

1

あなたのContent-Lengthヘッダの値を確認することができます応答:

Map<String, List<String>> headers = connection.getHeaderFields(); 
for (Entry<String, List<String>> header : headers.entrySet()) { 
if(header.getKey().equals("Content-Legth")){ 
len=Integer.parseInt(header.getValue()); 
} 
} 

たりすることができます。このようなバッファリングリーダーのあなたの応答:

InputStream is = connection.getInputStream(); 
InputStreamReader reader = new InputStreamReader(is); 
      StringBuilder builder = new StringBuilder(); 
      int c = 0; 
      while ((c = reader.read()) != -1) { 
       builder.append((char) c); 
      } 
+0

ありがとうございます!完璧に動作します! –

+0

ようこそ。 –

0

ありがとう:

return gson.fromJson(new InputStreamReader(inputStream), YourType.class); 
関連する問題