1. ホーム
  2. java

[解決済み] HTTPレスポンスのボディを文字列として取得するにはどうすればよいですか?

2022-04-20 12:59:23

質問

以前は、ここに書かれているように、Apache Commonsで取得する方法があったことは知っています。

http://hc.apache.org/httpclient-legacy/apidocs/org/apache/commons/httpclient/HttpMethod.html

...そして、ここにその一例があります。

http://www.kodejava.org/examples/416.html

...が、これは非推奨だと思います。

Java で http get リクエストを行い、レスポンスボディをストリームではなく文字列で取得する他の方法はありますか?

どのように解決するのですか?

私が思いつく限りのライブラリはすべてストリームを返します。あなたが使えるのは IOUtils.toString() から Apache Commons IO を読み込んで InputStreamString を1回のメソッド呼び出しで実行します。例えば

URL url = new URL("http://www.example.com/");
URLConnection con = url.openConnection();
InputStream in = con.getInputStream();
String encoding = con.getContentEncoding();
encoding = encoding == null ? "UTF-8" : encoding;
String body = IOUtils.toString(in, encoding);
System.out.println(body);

更新しました。 上記の例では、レスポンスに含まれるコンテンツエンコーディングが利用可能な場合はそれを使用するように変更しました。そうでない場合は、ローカルシステムのデフォルトを使用する代わりに、最良の推測としてUTF-8をデフォルトとします。