目录

网址处理(URL Processing)

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。

URL类方法

java.net.URL类表示一个URL,并具有一组完整的方法来操作Java中的URL。

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

Sr.No. 方法和描述
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

根据给定的String创建一个URL。

4

public URL(URL context, String url) throws MalformedURLException

通过一起解析URL和String参数来创建URL。

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

Sr.No. 方法和描述
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的连接,允许客户端与资源通信。

例子 (Example)

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

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

输出 (Output)

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连接。

例如 -

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

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

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

Sr.No. 方法和描述
1

Object getContent()

检索此URL连接的内容。

2

Object getContent(Class[] classes)

检索此URL连接的内容。

3

String getContentEncoding()

返回content-encoding头字段的值。

4

int getContentLength()

返回content-length头字段的值。

5

String getContentType()

返回content-type头字段的值。

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。

例子 (Example)

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

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

输出 (Output)

$ java URLConnDemo
.....a complete HTML content of home page of amrood.com.....
↑回到顶部↑
WIKI教程 @2018