JavaでURLをパースする方法

提供: Java入門
移動: 案内検索
スポンサーリンク

JavaでURLをパースするには、正規表現を頼らずに、URLクラスを用いて、簡単にパースできます。スプリットなどを使用して、がんばって分解する必要はありません。

読み方

URL
ゆーあーるえる

概要

java.netで提供されるURLクラスを使用して、URLを簡単に分解できます。 URLに含まれるベーシック認証のユーザ名とパスワードも簡単に取得できます。

parseurl1

ソースコード parseurl1.java

/*
 * parseurl1.java
 * Copyright (C) 2015 kaoru <kaoru@bsd>
 */
import java.net.*;
public class parseurl1
{
        public static void main(String[] args) {
                try {
                        URL url = new URL("http://user:password@foo.com:80/path/to?k1=v1&k2=v2#help");
                        System.out.println("protocol = "        + url.getProtocol() );
                        System.out.println("UserInfo = "        + url.getUserInfo() );
                        System.out.println("authority = "       + url.getAuthority() );
                        System.out.println("host = "            + url.getHost() );
                        System.out.println("port = "            + url.getPort() );
                        System.out.println("path = "            + url.getPath() );
                        System.out.println("query = "           + url.getQuery() );
                        System.out.println("filename = "        + url.getFile() );
                        System.out.println("ref = "             + url.getRef() );
                } catch (MalformedURLException e) {
                        System.out.println(e);
                }
        }
}

コンパイル

javac parseurl1.java

実行例

$ java parseurl1
protocol = http
UserInfo = user:password
authority = user:password@foo.com:80
host = foo.com
port = 80
path = /path/to
query = k1=v1&k2=v2
filename = /path/to?k1=v1&k2=v2
ref = help

間違っているURLを渡す例

URL url = new URL("foo://aaaaaaaaaaaaaaaaaaaaa");

上記の場合、以下のエラーになります。

java.net.MalformedURLException: unknown protocol: foo
URL url = new URL("foo");

上記の場合、以下のエラーになります。

java.net.MalformedURLException: unknown protocol: foo
URL url = new URL("http://localhost:port");

上記の場合、以下のエラーになります。

java.net.MalformedURLException: For input string: "port"
URL url = new URL("http://localhost:9999999999");

上記の場合、以下のエラーになります。

java.net.MalformedURLException: For input string: "port"
URL url = new URL("http://localhost:-1");

-1番ポートを指定した場合、エラーにならず、ポート番号が-1になります。-1でいいのか、TCP/IP...。

関連項目




スポンサーリンク