- Java教程
- Java - 主页
- Java - 概述
- Java - 环境设置
- Java - 基本语法
- Java - 变量类型
- Java - 基本数据类型
- Java - 基本运算符
- Java 控制语句
- Java - 循环控制
- Java - 决策
- Java - 如果-否则
- Java-开关
- Java - For 循环
- Java - For-Each 循环
- Java - While 循环
- Java - do-while 循环
- Java - 中断
- Java - 继续
- 面向对象编程
- Java - 对象和类
- Java - 方法
- Java - 构造函数
- Java - 访问修饰符
- Java-继承
- Java-多态性
- Java - 重写
- Java-抽象
- Java-封装
- Java - 接口
- Java - 包
- Java - 内部类
- Java 数据类型
- Java - 字符
- Java 文件处理
- Java - 文件和 I/O
- Java 错误与异常
- Java - 异常
- Java多线程
- Java-多线程
- Java同步
- Java-同步
- Java-线程间通信
- Java-线程死锁
- Java-线程控制
- Java网络
- Java-网络
- Java-URL 处理
- Java - 泛型
- Java集合
- Java - 集合
- Java列表接口
- Java - 列表接口
- Java队列接口
- Java - 队列接口
- Java地图接口
- Java - 地图接口
- Java - SortedMap 接口
- Java设置接口
- Java - 设置接口
- Java - SortedSet 接口
- Java数据结构
- Java - 数据结构
- Java-枚举
- Java 集合算法
- Java - 集合
- Java - 迭代器
- Java - 比较器
- Java杂项
- Java - 正则表达式
- Java-序列化
- Java - 发送电子邮件
- Java - Applet 基础知识
- Java - 文档
- Java 有用资源
- Java - 问题与解答
- Java - 快速指南
- Java - 有用的资源
- Java - 讨论
- Java - 示例
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.....
