今回はサイトからHTMLを読み込んでみます。
読み込みには、Apache HttpComponents Clientを使います。
Apache HttpComponents Clientの入手
mavenを使って入手
pom.xmlは、こんな感じ。
1 2 3 4 5 6 | <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents.client5/httpclient5 --> <dependency> <groupId>org.apache.httpcomponents.client5</groupId> <artifactId>httpclient5</artifactId> <version>5.2.1</version> </dependency> |
手動で入手
手動で入手するのであれば、以下のjarを入手することになります。
https://mvnrepository.com/repos/central
- httpclient5-5.2.1.jar
- httpcore5-5.2.jar
- httpcore5-h2-5.2.jar
- slf4j-api-1.7.36.jar
※2023年10月現在です。
ちなみに、Apache License 2.0で提供されています。
・・が、依存関係上、MITライセンスのもの(SLF4J)が含まれます。
Apache HttpComponents Clientを使って、HTMLを取得するサンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | import org.apache.hc.client5.http.classic.methods.HttpGet; import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; import org.apache.hc.client5.http.impl.classic.HttpClients; import org.apache.hc.core5.http.io.entity.EntityUtils; public class HttpClientTest { public static void main(String[] args) { //HTTPクライアントを作成 try (CloseableHttpClient httpClient = HttpClients.createDefault()) { //HTTP GETリクエストを作成 HttpGet httpGet = new HttpGet("https://www.javalife.jp/"); //リクエスト送信 httpClient.execute(httpGet,response -> { //ステータスコード取得 int sc = response.getCode(); //HTML取得 String html = EntityUtils.toString(response.getEntity()); //取得値を出力 System.out.println("ステータスコード : " + sc); System.out.println("HTML : " + html); return null; }); } catch (Exception e) { e.printStackTrace(); } } } |
実行結果
当サイトのトップページから取得したHTMLが出力されます。
ついでに、SLF4Jのライブラリが不足している旨のエラーメッセージが出力されます。
1 2 3 4 5 | SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. ステータスコード : 200 HTML : <!doctype html><html lang="ja">(以下略) |
SLF4Jのエラーが気になるようでしたら、slf4j-simpleを追加してください。
サンプルの解説
HttpClients.createDefault()でクライアントを作成。
次に、new HttpGet(“ここにURL”)で、GETのリクエストを作成。
最後にクライアントで実行です。
あとは、クライアントの実行後に、ステータスコード(200)とHTMLを標準出力です。
※このサンプルを動作させるためには、Apache HttpClient(Apache HttpComponents) 5.x系のライブラリが必要です。