注目記事

【Javaコード入門】HTTP通信_①URLConnectionクラス

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
  1. package com.example.mynavi.socket;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.net.URI;
  7.  
  8. public class UrlConnect {
  9.   public static void main(String[] args) {
  10.     try {
  11.       var url = URI.create("https://www.examples.com").toURL();
  12.       var con = url.openConnection();
  13.       try (var reader = new BufferedReader(
  14.         new InputStreamReader(con.getInputStream(), "Windows-31J"))) {
  15.         while (reader.ready()) {
  16.           System.out.println(reader.readLine());
  17.         }
  18.       }
  19.     } catch (IOException e) {
  20.       e.printStackTrace();
  21.     }
  22.   }
  23. }

  1. <!DOCTYPE html>
  2. <html lang="en-US">
  3. <head>
  4.   <meta name="robts" content="index,follow">
  5.   ...後略...

URLConnection#getInputStreamメソッドで入力ストリームを取得できたら、あとはストリームの操作手順に従って、入力を読み込むだけです。詳しくは「ストリーム」の節も合わせて参照してください。

HTTP通信_目次
URLConnectionクラス
HttpClientクラス

監修

山田祥寛(有限会社 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万部を超える。