java.net.URL
URLアドレスベースのパッケージ、及び、このような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