Java-URL 处理


URL 代表统一资源定位符,代表万维网上的资源,例如网页或 FTP 目录。

本节向您展示如何编写与 URL 通信的 Java 程序。URL 可以分为几个部分,如下所示 -

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

协议示例包括 HTTP、HTTPS、FTP 和文件。路径也称为文件名,主机也称为权限。

以下是协议为 HTTP 的网页的 URL -

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

请注意,此 URL 未指定端口,在这种情况下,将使用协议的默认端口。对于 HTTP,默认端口是 80。

构造函数

java.net.URL类代表一个 URL,并拥有一整套在 Java 中操作 URL 的方法

URL 类有几个用于创建 URL 的构造函数,包括以下内容 -

先生。 构造函数和描述
1

public URL(字符串协议,字符串主机,int端口,字符串文件)抛出MalformedURLException

通过将给定部分组合在一起创建 URL。

2

public URL(字符串协议,字符串主机,字符串文件)抛出 MalformedURLException

与前面的构造函数相同,只是使用给定协议的默认端口。

3

public URL(String url) 抛出 MalformedURLException

从给定的字符串创建 URL。

4

public URL(URL context, String url) 抛出 MalformedURLException

通过解析 URL 和字符串参数来创建 URL。

URL 类包含许多用于访问所表示的 URL 的各个部分的方法。URL 类中的一些方法包括以下内容 -

先生。 方法及说明
1

公共字符串 getPath()

返回 URL 的路径。

2

公共字符串 getQuery()

返回 URL 的查询部分。

3

公共字符串 getAuthority()

返回 URL 的权限。

4

公共 int getPort()

返回 URL 的端口。

5

公共 int getDefaultPort()

返回 URL 协议的默认端口。

6

公共字符串 getProtocol()

返回 URL 的协议。

7

公共字符串 getHost()

返回 URL 的主机。

8

公共字符串 getHost()

返回 URL 的主机。

9

公共字符串 getFile()

返回 URL 的文件名。

10

公共字符串 getRef()

返回 URL 的引用部分。

11

public URLConnection openConnection() 抛出 IOException

打开与 URL 的连接,允许客户端与资源进行通信。

例子

以下 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();
      }
   }
}

该程序的示例运行将产生以下结果 -

输出

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

URLConnections 类方法

openConnection() 方法返回java.net.URLConnection,这是一个抽象类,其子类表示各种类型的 URL 连接。

例如 -

  • 如果连接到协议为 HTTP 的 URL,则 openConnection() 方法将返回 HttpURLConnection 对象。

  • 如果连接到表示 JAR 文件的 URL,则 openConnection() 方法将返回 JarURLConnection 对象等。

URLConnection 类有许多用于设置或确定有关连接的信息的方法,包括以下内容 -

先生。 方法及说明
1

对象获取内容()

检索此 URL 连接的内容。

2

对象 getContent(Class[] 类)

检索此 URL 连接的内容。

3

字符串 getContentEncoding()

返回内容编码标头字段的值。

4

int getContentLength()

返回内容长度标头字段的值。

5

字符串 getContentType()

返回内容类型标头字段的值。

6

int getLastModified()

返回最后修改的标头字段的值。

7

长 getExpiration()

返回过期标头字段的值。

8

长 getIfModifiedSince()

返回此对象的 ifModifiedSince 字段的值。

9

公共无效setDoInput(布尔输入)

传入 true 表示该连接将用于输入。默认值为 true,因为客户端通常从 URLConnection 读取。

10

公共无效setDoOutput(布尔输出)

传入 true 表示该连接将用于输出。默认值为 false,因为许多类型的 URL 不支持写入。

11

public InputStream getInputStream() 抛出 IOException

返回用于从资源读取的 URL 连接的输入流。

12

public OutputStream getOutputStream() 抛出 IOException

返回用于写入资源的 URL 连接的输出流。

13

公共 URL getURL()

返回此 URLConnection 对象连接到的 URL。

例子

以下 URLConnectionDemo 程序连接到从命令行输入的 URL。

如果 URL 表示 HTTP 资源,则连接将强制转换为 HttpURLConnection,并且一次读取资源中的数据。

// File Name : URLConnDemo.java
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 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();
      }
   }
}

该程序的示例运行将产生以下结果 -

输出

$ java URLConnDemo

.....a complete HTML content of home page of tutorialspoint.com.....
java_networking.htm