Java-url-processing

提供:Dev Guides
移動先:案内検索

Java-URL処理

URLはUniform Resource Locatorの略で、WebページやFTPディレクトリなどのWorld Wide Web上のリソースを表します。

このセクションでは、URLと通信するJavaプログラムの作成方法を示します。 次のように、URLは部分に分割することができます-

protocol://host:port/path?query#ref

プロトコルの例には、HTTP、HTTPS、FTP、およびファイルが含まれます。 パスはファイル名とも呼ばれ、ホストは機関とも呼ばれます。

以下は、プロトコルがHTTPであるWebページへのURLです-

https://www.amrood.com/index?language=en#j2se

このURLはポートを指定していないことに注意してください。この場合、プロトコルのデフォルトポートが使用されます。 HTTPの場合、デフォルトポートは80です。

コンストラクタ

*java.net.URL* クラスはURLを表し、JavaでURLを操作するための完全なメソッドセットを備えています。

URLクラスには、次のようなURLを作成するためのコンストラクタがいくつかあります-

Sr.No. Constructors & Description
1

public URL(String protocol, String host, int port, String file) throws MalformedURLException

指定された部分をまとめてURLを作成します。

2

public URL(String protocol, String host, String file) throws MalformedURLException

指定されたプロトコルのデフォルトポートが使用されることを除いて、前のコンストラクタと同じです。

3

public URL(String url) throws MalformedURLException

指定された文字列からURLを作成します。

4

public URL(URL context, String url) throws MalformedURLException

URL引数と文字列引数を一緒に解析してURLを作成します。

URLクラスには、表現されているURLのさまざまな部分にアクセスするための多くのメソッドが含まれています。 URLクラスのメソッドには、次のものが含まれます-

Sr.No. Method & Description
1

public String getPath()

URLのパスを返します。

2

public String getQuery()

URLのクエリ部分を返します。

3

public String getAuthority()

URLの権限を返します。

4

public int getPort()

URLのポートを返します。

5

public int getDefaultPort()

URLのプロトコルのデフォルトポートを返します。

6

public String getProtocol()

URLのプロトコルを返します。

7

public String getHost()

URLのホストを返します。

8

public String getHost()

URLのホストを返します。

9

public String getFile()

URLのファイル名を返します。

10

public String getRef()

URLの参照部分を返します。

11

public URLConnection openConnection() throws IOException

URLへの接続を開き、クライアントがリソースと通信できるようにします。

次のURLDemoプログラムは、URLのさまざまな部分を示しています。 URLがコマンドラインに入力され、URLDemoプログラムは指定されたURLの各部分を出力します。

//File Name : URLDemo.java
import java.net.*;
import java.io.*;

public class URLDemo {

   public static void main(String [] args) {
      try {
         URL url = new URL("https://www.amrood.com/index?language=en#j2se");

         System.out.println("URL is " + url.toString());
         System.out.println("protocol is " + url.getProtocol());
         System.out.println("authority is " + url.getAuthority());
         System.out.println("file name is " + url.getFile());
         System.out.println("host is " + url.getHost());
         System.out.println("path is " + url.getPath());
         System.out.println("port is " + url.getPort());
         System.out.println("default port is " + url.getDefaultPort());
         System.out.println("query is " + url.getQuery());
         System.out.println("ref is " + url.getRef());
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}

このプログラムのサンプル実行は、次の結果を生成します-

出力

URL is https://www.amrood.com/index?language=en#j2se
protocol is http
authority is www.amrood.com
file name is/index?language=en
host is www.amrood.com
path is/index
port is -1
default port is 80
query is language=en
ref is j2se

URLConnectionsクラスメソッド

openConnection()メソッドは、サブクラスがさまざまなタイプのURL接続を表す抽象クラスである java.net.URLConnection を返します。

たとえば-

  • プロトコルがHTTPであるURLに接続すると、openConnection()メソッドはHttpURLConnectionオブジェクトを返します。 *JARファイルを表すURLに接続すると、openConnection()メソッドはJarURLConnectionオブジェクトなどを返します。

URLConnectionクラスには、次のような接続に関する情報を設定または決定するための多くのメソッドがあります-

Sr.No. Method & Description
1
  • Object getContent()*

このURL接続のコンテンツを取得します。

2

Object getContent(Class[] classes)

このURL接続のコンテンツを取得します。

3

String getContentEncoding()

content-encodingヘッダーフィールドの値を返します。

4

int getContentLength()

content-lengthヘッダーフィールドの値を返します。

5

String getContentType()

content-typeヘッダーフィールドの値を返します。

6

int getLastModified()

最終変更ヘッダーフィールドの値を返します。

7

long getExpiration()

期限切れのヘッダーフィールドの値を返します。

8

long getIfModifiedSince()

このオブジェクトのifModifiedSinceフィールドの値を返します。

9

public void setDoInput(boolean input)

接続が入力に使用されることを示すためにtrueを渡します。 クライアントは通常URLConnectionから読み取るため、デフォルト値はtrueです。

10

public void setDoOutput(boolean output)

接続が出力に使用されることを示すためにtrueを渡します。 多くのタイプのURLは書き込みをサポートしていないため、デフォルト値はfalseです。

11

public InputStream getInputStream() throws IOException

リソースから読み取るためのURL接続の入力ストリームを返します。

12

public OutputStream getOutputStream() throws IOException

リソースに書き込むためのURL接続の出力ストリームを返します。

13

public URL getURL()

このURLConnectionオブジェクトが接続されているURLを返します。

次のURLConnectionDemoプログラムは、コマンドラインから入力されたURLに接続します。

URLがHTTPリソースを表す場合、接続はHttpURLConnectionにキャストされ、リソース内のデータは一度に1行ずつ読み取られます。

//File Name : URLConnDemo.java
import java.net.*;
import java.io.*;

public class URLConnDemo {

   public static void main(String [] args) {
      try {
         URL url = new URL("https://www.amrood.com");
         URLConnection urlConnection = url.openConnection();
         HttpURLConnection connection = null;
         if(urlConnection instanceof HttpURLConnection) {
            connection = (HttpURLConnection) urlConnection;
         }else {
            System.out.println("Please enter an HTTP URL.");
            return;
         }

         BufferedReader in = new BufferedReader(
            new InputStreamReader(connection.getInputStream()));
         String urlString = "";
         String current;

         while((current = in.readLine()) != null) {
            urlString += current;
         }
         System.out.println(urlString);
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}

このプログラムのサンプル実行は、次の結果を生成します-

出力

$ java URLConnDemo

.....a complete HTML content of home page of amrood.com.....