URL:
URL 是统一资源定位符(Uniform Resource Locator)的简称,它表示 Internet 上某一资源的地址。
通过 URL 用户可以访问各种网络资源,比如常见的 WWW 以及 FTP 站点。
浏览器可以通过解析给定的 URL 在网络上查找相应的文件或其他资源。
协议名(protocol)
指明获取资源所使用的传输协议,如 HTTP、FTP 和 file 等,资源名(resourceName)则应该是资源的完整地址,包括主机名、端口号、文件名或文件内部的一个引用。
URL类构造方法:
- URL (String s) 构造一个 字符串 s 对象 URL
- URL(url,String s) 构造一个基本地址url和字符串s对象URL
- URL(String protocol,String host,String file) 构造指定的协议、主机名和文件名的URL 对象
- URL(String protocol,String host,int port,String file) 构造指定的协议、主机名、端口号和文件名的URL 对象
URL类的常用方法:
方法 | 说明 |
---|---|
public String getProtocol() | 获取该 URL 的协议名。 |
public String getHost() | 获取该 URL 的主机名。 |
public int getPort() | 获取该 URL 的端口号,如果没有设置端口,返回 -1。 |
public String getFile() | 获取该 URL 的文件名。 |
public String getRef() | 获取该 URL 在文件中的相对位置。 |
public String getQuery() | 获取该 URL 的查询信息。 |
public String getPath() | 获取该 URL 的路径。 |
public String getAuthority() | 获取该 URL 的权限信息。 |
public String getUserInfo() | 获得使用者的信息。 |
public String getRef() | 获得该 URL 的锚点。 |
URLConnection 类
在 java.net 包中,定义了专门的 URLConnection 类来表示与 URL 建立的通信连接
URLConnection 类的对象使用 URL 类的 openConnection() 方法获得。
方法 | 说明 |
---|---|
void addRequestProperty(String key,String value) | 添加由键值对指定的一般请求属性。key 指的是用于识别请求的关键字 (例如 accept),value 指的是与该键关联的值。 |
void connect() | 打开到此 URL 所引用的资源的通信链接(如果尚未建立这样的链接)。 |
Object getConnection() | 检索此 URL 链接的内容。 |
InputStream getInputStream() | 返回从此打开的链接读取的输入流。 |
OutputStream getOutputStream() | 返回写入到此链接的输出流。 |
URL getURL() | 返回此 URLConnection 的 URL 字段的值。 |
示例:
使用 URL 和 URLConnection 类获取与qq首页的链接并将其页面信息输出到控制台
- 在方法中创建一个 URL 对象,然后传入参数“http://www.qq.com/”
- 获得 URLConnection 对象,通过输入流读取页面源代码并将信息输出到控制台
实现代码:
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
public class URLtest {
public static void main(String[] args) {
try {
URL url = new URL("http://www.qq.com/");//构造String地址
System.out.println("网站协议:" + url.getProtocol());//getProtocol()获取协议
System.out.println("网站主机:" + url.getHost());//url.getHost()获取主机地址
System.out.println("网站端口:" + url.getPort());//url.getPort()获取端口,如果没有设置端口,返回 -1
System.out.println("查询信息:" + url.getQuery());//获取查询详细,若没有返回null
InputStream input;
URLConnection sc=url.openConnection();//获得 URL 的通信连接
input=sc.getInputStream();
byte[] b=new byte[1024];//字节数组
int len;
while((len=input.read(b))!=-1)
{
System.out.println("页面信息:");
System.out.println(new String(b,0,len));
}
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
输出信息:
网站协议:http
网站主机:www.qq.com
网站端口:-1
查询信息:null
页面信息:
<html>
<head>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache, must-revalidate">
<meta HTTP-EQUIV="expires" CONTENT="0">
</head>
<body>
<script type="text/javascript" language="javascript" src="/lib/cat_jquery.js.jgz"></script>
<script type="text/javascript">
<!-- fake for iphone internet detect -->
<!-- <HTML><HEAD><TITLE>Success</TITLE></HEAD><BODY>Success</BODY></HTML> -->
$(document).ready(function(){
//http://192.168.1.1/html/portalpush.html?origin=aHR0cDovLzNnLmNu
var cur_href = window.location.href;
if(cur_href.indexOf("?origin=") > 0){
var protal_href= cur_href.substr(cur_href.indexOf("?origin=") + 8);
var date = new Date();
date.setTime(date.getTime() + (60 * 60 * 1000));
var Expires = ";expires="+date.toGMTString();
var redirecturl = "redirecturl=" + prot
页面信息:
al_href + Expires + "; path=/" ;
document.cookie = redirecturl;
window.open("/html/npsnotice.html","_self");
}
});
</script>
</body>
</html>