HTTP通信を実行する – URLConnectionクラス
public URLConnection openConnection([Proxy proxy]) throws IOException
proxy:接続に利用するプロキシ
URLConnectionクラス(java.netパッケージ)を利用することで、HTTP経由でWebページにアクセスできます。URLConnetionオブジェクトは、URL#openConnectionメソッドで取得できます。
URLConnectionクラスで利用できる主なメソッドは、以下の通りです。
| URLConnectionクラスの主なメソッド | |
|---|---|
| メソッド | 概要 |
| void connect() | 現在のURLに対して接続 |
| int getConnectTimeout() | 接続タイムアウト時間を取得 |
| Object getContent() | コンテンツを取得 |
| String getContentEncoding() | content-encodingヘッダーの値を取得 |
| int getContentLength() | content-lengthヘッダーの値を取得 |
| String getContentType() | content-typeヘッダーの値を取得 |
| long getDate() | dateヘッダーの値を取得 |
| String getHeaderField(String name) | 指定されたヘッダーの値を取得 |
| long getHeaderFieldDate(String name, long Default) | 指定されたヘッダーを日付として解析した値を取得 |
| int getHeaderFieldInt(String name, int Default) | 指定されたヘッダーを数値として解析した値を取得 |
| InputStream getInputStream() | 現在の接続を読み込む入力ストリームを取得 |
| OutputStream getOutputStream() | 現在の接続に書き込む出力ストリームを取得 |
| void setConnectTimeout(int timeout) | 接続タイムアウト時間を設定 |
たとえば以下では、指定されたURLからコンテンツを取得し、その内容を標準出力に書き出す例です。
UrlConnect.java
- package com.example.mynavi.socket;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.net.URI;
- public class UrlConnect {
- public static void main(String[] args) {
- try {
- var url = URI.create("
https://www.examples.com").toURL(); - var con = url.openConnection();
- try (var reader = new BufferedReader(
- new InputStreamReader(con.getInputStream(), "Windows-31J"))) {
- while (reader.ready()) {
- System.out.println(reader.readLine());
- }
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
↓
- <!DOCTYPE html>
- <html lang="en-US">
- <head>
- <meta name="robts" content="index,follow">
- ...後略...
URLConnection#getInputStreamメソッドで入力ストリームを取得できたら、あとはストリームの操作手順に従って、入力を読み込むだけです。詳しくは「ストリーム」の節も合わせて参照してください。
監修
山田祥寛(有限会社 WINGSプロジェクト)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NEC にてシステム企画業務に携わるが、2003年 4 月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト(https://wings.msn.to/)」の代表でもある。主な著書に『改訂 3 版JavaScript 本格入門』(技術評論社)、「独習シリーズ(C#・Python・PHP・Ruby・JSP&サーブレットなど)」(翔泳社)、「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravel など)」(Amazon Kindle)など。売り上げの累計は100万部を超える。