Java URL 处理

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(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类中的一些方法包括以下内容 –

编号 方法和描述
1 public String getPath() 返回URL的路径。
2 public String getQuery() 返回URL的查询部分。
3 public String getAuthority() 返回URL的授权信息。
4 public int getPort() 返回URL的端口号。
5 public int getDefaultPort() 返回URL协议的默认端口号。
6 public String getProtocol() 返回URL的协议。
7 public String getHost() 返回URL的主机名。
8 public String getHost() 返回URL的主机名。
9 public String getFile() 返回URL的文件名。
10 public String getRef() 返回URL的引用部分。
11 public URLConnection openConnection() throws IOException 打开到URL的连接,允许客户端与资源进行通信。

示例

下面的URLDemo程序演示了一个URL的各个部分。在命令行上输入一个URL,URLDemo程序会输出给定URL的每个部分。

// File Name : URLDemo.java
import java.net.*;
import java.io.*;

public class URLDemo {

   public static void main(String [] args) {
      try {
         URL url = new URL("https://www.amrood.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.amrood.com/index.htm?language=en#j2se
protocol is http
authority is www.amrood.com
file name is /index.htm?language=en
host is www.amrood.com
path is /index.htm
port is -1
default port is 80
query is language=en
ref is j2se

URLConnections 类方法

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

例如 –

  • 如果连接的URL协议是HTTP,则openConnection()方法返回一个HttpURLConnection对象。

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

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

序号 方法和描述
1 Object getContent() 检索此URL连接的内容。
2 Object getContent(Class[] classes) 检索此URL连接的内容。
3 String getContentEncoding() 返回内容编码头字段的值。
4 int getContentLength() 返回内容长度头字段的值。
5 String getContentType() 返回内容类型头字段的值。
6 int getLastModified() 返回最后修改日期头字段的值。
7 long getExpiration() 返回过期日期头字段的值。
8 long getIfModifiedSince() 返回此对象的ifModifiedSince字段的值。
9 public void setDoInput(boolean input) 设置为true,表示连接将用于输入。默认值为true,因为客户端通常从URLConnection读取。
10 public void setDoOutput(boolean output) 设置为true,表示连接将用于输出。默认值为false,因为许多类型的URL不支持写入。
11 public InputStream getInputStream() throws IOException 返回用于从资源读取的URL连接的输入流。
12 public OutputStream getOutputStream() throws IOException 返回用于写入资源的URL连接的输出流。
13 public URL getURL() 返回此URLConnection对象连接的URL。

示例

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

如果URL表示一个HTTP资源,则将连接转换为HttpURLConnection,并逐行读取资源中的数据。

// File Name : URLConnDemo.java
import java.net.*;
import java.io.*;

public class URLConnDemo {

   public static void main(String [] args) {
      try {
         URL url = new URL("https://www.amrood.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 amrood.com.....

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程