Java网络||URL类和URLConnection类

本文介绍了Java中URL(统一资源定位符)的概念及其重要性,详细讲解了URL的构造方法,如通过字符串、协议、主机名、端口号和文件名创建URL对象。此外,还探讨了URLConnection类在建立与URL通信连接中的作用。通过示例展示了如何使用URL和URLConnection获取并打印QQ首页的页面信息,包括协议、主机、端口和页面内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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>

 

 

 

 

 

参考资料:http://c.biancheng.net/view/1205.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值