http 呼び出しから応答を取得するこの 2 つの方法の一般的な違いがどこにあるのかを知りたいです。
以下は Android の例ですが、Java でもまったく同じです。
org.apache.http
ライブラリのみを使用した最初の例:
String s = "";
try {
HttpPost httppost = new HttpPost(url);
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
s = EntityUtils.toString(entity, HTTP.UTF_8);
// do something with s
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
BufferedReader を使用して応答を取得する 2 番目の例:
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet(url);
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
InputStream instream = entity.getContent();
BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(
instream));
try {
String line;
StringBuilder sb = new StringBuilder();
while((line = bufferedreader.readLine()) != null)
sb.append(line);
// do something with the stringbuilder
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
最初の例よりも Stream と Reader を使用する 2 番目の例を優先する必要があるシナリオと、その逆のシナリオはどれですか? 私がこの質問をする理由はいくつかあります。含まれていない重要な点があれば教えてください:
- リーダーのアプローチは、より多くのスペースと時間を必要とします。
- 応答データのサイズは、最初または 2 番目の例には影響しません。
- 2 番目の例のコードはより複雑です (より多くのオーバーヘッドがあります)。
- Reader アプローチは、ライブラリ内のさまざまな Reader の量により、より柔軟です。
この点から、私は最初の例を支持します。