Java 简明教程
Java - URL Processing
URL 代表统一资源定位符,表示万维网上的资源,例如网页或 FTP 目录。
此部分向您展示如何编写与 URL 通信的 Java 程序。URL 可以分解为以下部分:
protocol://host:port/path?query#ref
以下是一个协议为 HTTP 的网页的 URL:
https://www.amrood.com/index.htm?language=en#j2se
请注意此 URL 未指定端口,在这种情况下将使用该协议的默认端口。对于 HTTP,默认端口为 80。
Constructors
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 类中的一些方法包括以下方法:
Example
以下 URLDemo 程序演示了 URL 的各个部分。URL 输入在命令行上,URLDemo 程序输出给定 URL 的每个部分。
// File Name : URLDemo.java
import java.io.IOException;
import java.net.URL;
public class URLDemo {
public static void main(String [] args) {
try {
URL url = new URL("https://www.tutorialspoint.com/index.htm?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();
}
}
}
此程序的示例运行将生成以下结果 −
URLConnections Class Methods
openConnection() 方法返回 java.net.URLConnection,其子类代表各种类型的 URL 连接的抽象类。
例如 -
-
如果您连接到协议为 HTTP 的 URL,则 openConnection() 方法返回 HttpURLConnection 对象。
-
如果您连接到表示 JAR 文件的 URL,则 openConnection() 方法返回 JarURLConnection 对象,等等。
URLConnection 类具有用于设置或确定有关连接信息的许多方法,包括以下方法 −
Example
以下 URLConnectionDemo 程序连接到从命令行输入的 URL。
如果 URL 表示 HTTP 资源,则连接会被强制转换为 HttpURLConnection,并且资源中的数据会被逐行读取。
package com.tutorialspoint;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
public class URLConnDemo {
public static void main(String [] args) {
try {
URL url = new URL("https://www.tutorialspoint.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();
}
}
}
此程序的示例运行将产生以下结果: