Java-URL-Verarbeitung

URL (Uniform Resource Locator), auch als Webadresse bekannt, repräsentiert Ressourcen im Internet, wie Webseiten oder FTP-Adressen.

In diesem Abschnitt stellen wir vor, wie Java URLs verarbeitet. Eine URL kann in die folgenden Teile unterteilt werden.

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

Das Protokoll kann HTTP, HTTPS, FTP und File sein; der Port ist die Portnummer; der Pfad ist der Dateipfad und Dateiname.

Ein Beispiel für eine URL mit dem HTTP-Protokoll ist wie folgt:

http://www.example.com/index.html?language=cn#j2se

URL-Parsing:

  • Protokoll:http
  • Host (host:port):www.example.com
  • Portnummer:80. Das obige URL-Beispiel gibt keinen Port an, weil die Standard-Portnummer für das HTTP-Protokoll 80 ist.
  • Dateipfad (path):/index.html
  • Abfrageparameter (query):language=cn
  • Fragment (fragment):j2se, das die Position des HTML-Elements mit dem id-Attribut j2se auf der Webseite lokalisiert.

Methoden der URL-Klasse

Die URL-Klasse ist im Paket java.net definiert und wird verwendet, um URL-bezogene Inhalte zu verarbeiten. Die Erstellung und Verwendung der URL-Klasse werden unten separat vorgestellt.

java.net.URL bietet verschiedene Möglichkeiten zum Erstellen von URLs, und Ressourcen können über java.net.URL abgerufen werden.

Nein.Methodenbeschreibung
1public URL(String protocol, String host, int port, String file) throws MalformedURLException.
Erstellt eine URL unter Verwendung der angegebenen Parameter (Protokoll, Hostname, Portnummer, Dateiname).
2public URL(String protocol, String host, String file) throws MalformedURLException
Erstellt eine URL unter Verwendung des angegebenen Protokolls, Hostnamens und Dateinamens und verwendet dabei den Standardport des Protokolls.
3public URL(String url) throws MalformedURLException
Erstellt eine URL aus der angegebenen URL-Zeichenkette.
4public URL(URL context, String url) throws MalformedURLException
Erstellt eine URL unter Verwendung einer Basisadresse und einer relativen URL.

Die URL-Klasse enthält viele Methoden für den Zugriff auf verschiedene Teile einer URL. Die einzelnen Methoden und Beschreibungen lauten wie folgt:

Nein.Methodenbeschreibung
1public String getPath()
Gibt den Pfadteil der URL zurück.
2public String getQuery()
Gibt den Abfrage-Teil der URL zurück.
3public String getAuthority()
Ruft den Authority-Teil dieser URL ab.
4public int getPort()
Gibt den Port-Teil der URL zurück.
5public int getDefaultPort()
Gibt die Standard-Portnummer des Protokolls zurück.
6public String getProtocol()
Gibt das Protokoll der URL zurück.
7public String getHost()
Gibt den Host der URL zurück.
8public String getFile()
Gibt den Dateinamenteil der URL zurück.
9public String getRef()
Ruft den Anker (auch "Referenz" genannt) dieser URL ab.
10public URLConnection openConnection() throws IOException
Öffnet eine URL-Verbindung und führt den Client aus, um auf die Ressource zuzugreifen.

Beispiel

Das obige Beispiel zeigt die Verwendung der URL-Klasse von java.net, um verschiedene Teilparameter einer URL abzurufen:

URLDemo.java

import java.net.*; import java.io.*; public class URLDemo { public static void main(String [] args) { try { URL url = new URL("http://www.example.com/index.html?language=cn#j2se"); System.out.println("URL:" + url.toString()); System.out.println("Protokoll:" + url.getProtocol()); System.out.println("Autorität:" + url.getAuthority()); System.out.println("Dateiname und Anforderungsparameter:" + url.getFile()); System.out.println("Hostname:" + url.getHost()); System.out.println("Pfad:" + url.getPath()); System.out.println("Port:" + url.getPort()); System.out.println("Standardport:" + url.getDefaultPort()); System.out.println("Anfrageparameter:" + url.getQuery()); System.out.println("Fragment:" + url.getRef()); }catch(IOException e) { e.printStackTrace(); } } }

Das Kompilierungs- und Ausführungsergebnis des obigen Beispiels ist wie folgt:

URL 为:http://www.example.com/index.html?language=cn#j2se
协议为:http
验证信息:www.example.com
文件名及请求参数:/index.html?language=cn
主机名:www.example.com
路径:/index.html
端口:-1
默认端口:80
请求参数:language=cn
定位位置:j2se

URLConnections Klassenmethoden

openConnection() gibt eine java.net.URLConnection zurück.

Zum Beispiel:

  • Wenn Sie über das HTTP-Protokoll eine Verbindung zu einer URL herstellen, gibt die Methode openConnection() ein HttpURLConnection-Objekt zurück.

  • Wenn es sich bei der URL, zu der Sie eine Verbindung herstellen, um eine JAR-Datei handelt, gibt die Methode openConnection() ein JarURLConnection-Objekt zurück.

  • Und so weiter...

Die Liste der URLConnection-Methoden lautet wie folgt:

Nein.Methodenbeschreibung
1Object getContent()
Ruft den Inhalt des URL-Links ab.
2Object getContent(Class[] classes)
Ruft den Inhalt des URL-Links ab.
3String getContentEncoding()
Gibt den Wert des Header-Felds content-encoding zurück.
4int getContentLength()
Gibt den Wert des Header-Felds content-length zurück.
5String getContentType()
Gibt den Wert des content-type-Header-Felds zurück.
6int getLastModified()
Gibt den Wert des last-modified-Header-Felds zurück.
7long getExpiration()
Gibt den Wert des expires-Header-Felds zurück.
8long getIfModifiedSince()
Gibt den Wert des ifModifiedSince-Felds des Objekts zurück.
9public void setDoInput(boolean input)
Eine URL-Verbindung kann für Eingabe und/oder Ausgabe verwendet werden. Wenn Sie die URL-Verbindung für die Eingabe verwenden möchten, setzen Sie das DoInput-Flag auf true; wenn nicht, setzen Sie es auf false. Der Standardwert ist true.
10public void setDoOutput(boolean output)
Eine URL-Verbindung kann für Eingabe und/oder Ausgabe verwendet werden. Wenn Sie die URL-Verbindung für die Ausgabe verwenden möchten, setzen Sie das DoOutput-Flag auf true; wenn nicht, setzen Sie es auf false. Der Standardwert ist false.
11public InputStream getInputStream() throws IOException
Gibt den Eingabestream der URL zurück, der zum Lesen von Ressourcen verwendet wird.
12public OutputStream getOutputStream() throws IOException
Gibt den Ausgabestream der URL zurück, der zum Schreiben von Ressourcen verwendet wird.
13public URL getURL()
Gibt die URL zurück, mit der das URLConnection-Objekt verbunden ist.

Beispiel

Im folgenden Beispiel verwendet die URL das HTTP-Protokoll. openConnection gibt ein HttpURLConnection-Objekt zurück.

URLConnDemo.java

import java.net.*; import java.io.*; public class URLConnDemo { public static void main(String [] args) { try { URL url = new URL("http://www.example.com"); URLConnection urlConnection = url.openConnection(); HttpURLConnection connection = null; if(urlConnection instanceof HttpURLConnection) { connection = (HttpURLConnection) urlConnection; } else { System.out.println("Bitte geben Sie eine URL-Adresse ein."); 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(); } } }

Das Kompilierungs- und Ausführungsergebnis des obigen Beispiels ist wie folgt:

$ javac URLConnDemo.java 
$ java URLConnDemo
.....这里会输出Example首页(http://www.example.com)的 HTML 内容.....
Weitere Erweiterungen