Javaのネットワークプログラミングは:あなたは、URLを知っている必要がありますし、URLConnectionのは次のようになります

java.net.URLURLアドレスベースのパッケージ、及び、このようなURLのホスト名とポート番号へのアクセスなどのURLアドレスを、解析するための基本的な方法を提供します。java.net.URLConnectionこれは、アプリケーションとURLとの間の通信リンクは、読み取りおよびリソースのURL参照に書き込むために使用することができ表します。

URLConnectionのはこれまでのところ、それらの間の関係は右、接続URLよりちょうど1以上のように見えますか?

01、URLは何ですか

URLが何であるかを理解するために、二つの新しいコンセプトURIやURNを導入する必要があります。

どのような地獄、明確なURLは、再び2を混同しましたか?心配しないで、私たちは明確になるように、3のように、魔法のように変更することができます。

  • URI =ユニバーサルリソース識別子、統一資源識別子のための中国の解釈
  • URL =ユニバーサルリソースロケータ、ユニフォームリソースロケータのための中国の解釈
  • URN =ユニバーサルリソース名、ユニフォーム・リソース名としての中国の解釈

それらの間の関係を以下に示します。

 

 

このチャートは、あなたはそれを行う方法を、ああ、何を意味するのですか?Geの男が依頼する問題がある張Xiaojing、私たちは「ウィキペディア」ああを要求しません。

URI URLとURN、URLまたはURN及び(Locatorおよび名前とともに)組み合わせに分けることができます。URNは、URLが人の住所のようなものです、その人の名前のようなものです。言い換えれば、同一性を決定するためにURN、URLは、それを見つけるための方法を提供します。

明確な概念、右?URIは純粋に構文構造、WebリソースのIDを指定するために使用される文字列のさまざまな部分です。URLは、Webリソースの十分な情報の位置を含むURIの特殊なケースです。URIは、統一資源識別子であり、そしてURLはユニフォームリソースロケータです。ます。http://www.itmind.net/ URLは、たとえば、URIです。mailto:[email protected] URIはサブセット、またはユニフォームリソース名含まれる場合があります(URN、という名前のリソースをが、リソースを検索する方法を指定しません)例えば、あるためではなく、すべてのURIは、URLです。

それはそれのうちの例に疲れるほど、ホスト名とポート番号のURLを取得し、それをそれ。

URL url = new URL("http://www.itmind.net/category/payment-selection/zhishixingqiu-jingxuan/");

System.out.println("host: " + url.getHost());
System.out.println("port: " + url.getPort());
System.out.println("uri_path: " + url.getPath());

// 输出
// host: www.itmind.net
// port: -1
// uri_path: /category/payment-selection/zhishixingqiu-jingxuan/

1)作成java.net.URL対象の方法は非常に簡単であり、コードの単一の行を必要とします。

URL url = new URL(URL地址);

URLクラスが最終であるため、URLオブジェクトは、不変であり、この利点は、「スレッドセーフ」であることを確認することです。

2)ではjava.net.URL、オブジェクト、そうでホスト名、ポート、パス、および関連付けられたURLを取得することができます。

url.getHost()
url.getPort()
url.getPath()

02は、URLConnectionのものです

URLConnectionのは、アプリケーションとURLを表す抽象クラスとの間の通信リンクです。それは読んでリソースURL参照に書き込むために使用することができます例です。このクラスはSocketクラスより使いやすく、より高度なネットワーク接続の抽象化を提供します。

URLConnectionオブジェクトを取得する方法は?よるURLオブジェクトopenConnection()のメソッドは、以下に例示します。

URL url = new URL("http://www.itmind.net");
URLConnection connection = url.openConnection();

URLプロトコルがHTTPの場合は、URLConnectionの接続のHttpURLConnectionのサブクラスとして返さ。

ではURLConnectionオブジェクト、次のことができますgetInputStream()読んASCIIテキストASCIIのURLが引用された場合、それによって(リソースデータを読み込み、InputStreamを返し、HTMLファイルが読み込まれている場合、元のHTMLと比べて、画像ファイルがバイナリ画像を読んでいた場合データ等)。

のは、小さな白Xuetangホームページの内容は、以下のコードサンプルについて読みしてみましょう。

URL url = new URL("http://www.itmind.net");
URLConnection connection = url.openConnection();

try (InputStream in = connection.getInputStream();) {

    ByteArrayOutputStream output = new ByteArrayOutputStream();
    byte[] buffer = new byte[1024];
    int len = -1;
    while ((len = in.read(buffer)) != -1) {
        output.write(buffer, 0, len);
    }

    System.out.println(new String(output.toByteArray()));

catch (IOException e) {
    e.printStackTrace();
}

あなたはできtry-with-resource得るInputStream実装し、AutoCloseable入力ストリームの内容が読み込まれた後、インターフェイスが自動的に閉じることができます。

以下に示す(セクション)として印刷コンテンツ:

 

 

あなたはURLの内容を読みたい場合は、上記の方法は良いプログラムです、それを試して急いで!

03、URLとURLConnectionの異なります

URLとURLConnectionの最大の違いは、次のとおりです。

  • URLConnectionのHTTPヘッダーへのアクセスを提供します。
  • URLConnectionのは、URLのリクエストパラメータを送信するように構成することができます。
  • リソースのURLConnection URLターゲティングを読むことができるだけでなく、あなたはまた、データを書き込むことができます。

次の方法のいくつかのHTTPヘッダを取得します。

  • getContentType、すなわちデータのMIMEコンテンツタイプContent-Typeヘッダフィールドの値を返します。タイプが利用できない場合、nullが返されます。コンテンツタイプがテキストである場合、Content-Typeヘッダは、次のような文字セット符号化の内容の識別を含むことができます。Content-type:text/html; charset=UTF-8

  • getContentLength()は、コンテンツ長ヘッダフィールド値を返し、すなわち、コンテンツのバイト数。

  • getContentEncoding()は、例えば、コンテンツコードヘッダフィールド値、すなわち、コンテンツの符号化(異なる文字でエンコード)を返す:X-GZIP。

  • getDate()は、日付ヘッダフィールド、すなわち、要求の送信時刻を返します。

  • ()、値は有効期限(有効期限)ヘッダフィールドgetExpirationを返さ。それが0を返した場合、それは永遠にキャッシュされ、有効期限はありません。

  • ()、値は、最後の修飾(最終更新日)ヘッダフィールドgetLastModifiedを返さ。

以下のコード例。

URL url = new URL("http://www.itmind.net");
URLConnection connection = url.openConnection();
System.out.println(connection.getContentType());
System.out.println(connection.getContentLength());
System.out.println(connection.getContentEncoding());
System.out.println(connection.getDate());
System.out.println(connection.getExpiration());
System.out.println(connection.getLastModified());

// 输出
// text/html; charset=UTF-8
// -1
// null
// 1566886980000
// 0
// 0

 

おすすめ

転載: www.cnblogs.com/qing-gee/p/11489556.html