java处理url_Java URL处理

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

本节介绍如何编写与URL通信相关的Java程序。URL可以分解为多个部分,如下所示 -

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

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

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

https://www.yiibai.com/index.html?language=cn#j2se注意,此URL未指定端口,在这种情况下将使用协议的默认端口。使用HTTP,默认端口为80。

1. URL类方法

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 getFile()

返回URL的文件名。

9

public String getRef()

返回URL的引用部分。

10

public URLConnection openConnection() throws IOException

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

示例

以下URLDemo.java程序演示了URL的各个部分。URLDemo程序输出给定URL的每个部分。

// 文件名称 : URLDemo.java

import java.net.*;

import java.io.*;

public class URLDemo {

public static void main(String[] args) {

try {

URL url = new URL("http://www.kaops.com/index.html?language=zh#j2se");

System.out.println("URL: " + url.toString());

System.out.println("protocol: " + url.getProtocol());

System.out.println("authority: " + url.getAuthority());

System.out.println("file name: " + url.getFile());

System.out.println("host: " + url.getHost());

System.out.println("path: " + url.getPath());

System.out.println("port: " + url.getPort());

System.out.println("default port: " + url.getDefaultPort());

System.out.println("query: " + url.getQuery());

System.out.println("ref: " + url.getRef());

} catch (IOException e) {

e.printStackTrace();

}

}

}

执行上面示例代码,得到以下结果 -

URL: http://www.kaops.com/index.html?language=zh#j2se

protocol: http

authority: www.kaops.com

file name: /index.html?language=zh

host: www.kaops.com

path: /index.html

port: -1

default port: 80

query: language=zh

ref: j2se

2. URLConnections类方法

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

例如 -

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

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

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

编号

构造函数

描述

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()

返回last-modified头字段的值。

7

long getExpiration()

返回expired头字段的值。

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.java程序连接到指定的URL。

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

// 文件名称 : URLConnDemo.java

import java.net.*;

import java.io.*;

public class URLConnDemo {

public static void main(String[] args) {

try {

URL url = new URL("http://www.kaops.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();

}

}

}

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值