一、URL的构成:
注:资源路径还可以包含HTML文件中的参考位置(也称为参考点),一般用#表示,如http://tech.sina.com.cn:80//default.html#memo_1,此处memo_1是default.html中的一个位置。
以上采用的URL都是网络资源的完整路径,称为绝对URL;但有时也使用相对URL,它不包括协议和主机信息,表示文件在主机上的相对位置,相对URL可以是一个文件名,也可以是一个包括路径的文件名。
二、URL类
1、URL类的使用:
Java语言访问网络资源通过URL类来实现,URL定义了统一资源定位器来对网络资源进行定位,还包括一些访问方法。
URL对象指向网络资源,如网页、图形图像、音频视频等文件,创建URL对象后可得到URL各个部分的信息,获取URL内容。
URL的构造方法主要有以下四种:
(1)public URL(String url)
如:URL url1=new URL("http://www.163.com");
(2)public URL(URL baseURL,String relativeURL)
baseURL为绝对地址,relativeURL为相对位置,如:
URL gameWeb=new URL("http://www.ourgame.com/");
URL myGame=new URL(gameWeb,"pai/sandaha.html");
如果第一个参数为空,则与第一种构造方法相同。
(3)URL(String protocol,String host,String fileName)
文件名前可以带上路径
(4)URL(String prorocol,String host,int port,String fileName)
注:URL的构造方法都会抛出malformedURLException异常(畸形URL异常),生成URL对象时,必须对这个异常进行处理,否则系统编译通不过。
2、URL类的主要方法:
getContent( ) //获取URL的内容
getDefaultPort( ) //获取URL的默认端口
getFile( ) //获取URL的文件名
getHost( ) //获取URL的主机名
getPath( ) //获取URL的路径
getPort( ) //获取URL的端口
getProtocol( ) //获取URL的协议名
getUserInfo( ) //获取URL的用户信息
openStream( ) //打开URL连接,并返回在此连接上的输入流
set(String protocol,String host,int port,String file,String ref)
//设置URL各部分的参数
3、URLConnection类:
当涉及向服务器提供信息的问题时,如发送一个表单、向搜索引擎提供关键字等,需要运用URLConnection(URL连接),它是Java程序和URL之间创建通信链路的抽象类。
可用于连接由URL标识的任意资源,该类的对象既可以从资源中读,也可向资源写数据。
(1)URL连接的创建
URLConnection类的构造方法只有一个,即:
URLConnection(URL url) //构建一个与URL的连接
(2)常用方法:
public InputStream getInputStream( ) throws IOException: 打开一个连接到该URL的InputStream的对象,通过该对象,可从URL中读取Web页面内容。
public OutputStream getOutputStream( ) throws IOEception: 生成一个向该连接写入数据的OutputStream对象。
public void setDoInput(Boolean doInput): 若参数doInput是true,表示通过该URLConnection进行读操作,即从服务器读取页面内容。默认情况是true,同时读取内容。
public void setDoOutput(Boolean doOutput): 若参数doOutput是true,表示通过URLConnection进行写操作,即向服务器上的CGI程序(或ASP程序、JSP程序等)上传内容,默认是false。
public abstract void connect( ) throws IOException: 向URL对象所表示的资源发起连接。若已存在这样的连接,则该方法不做任何操作。
public String getHeaderFieldKey(int n): 返回HTTP响应头中第n个域的“名-值”对中“名”的内容,n从1开始。
public String getHeaderField(int n): 返回HTTP响应头中第n个域的“名-值”对中“值”这一部分的内容,n从1开始。
用户创建了URL类对象后,通过其openConnection方法获得URLConnection类的对象,其过程如下:
try{
URL myWeb=new URL("http://www.cctv.com");
URLConnection connection=myWeb.openConnection( ); //通过URL类对象的openConnection方法获得URLConnection类的对象
}catch(Exception e){
System.out.println(e.toString( ));
}
3、读写操作:
建立好了URL连接,就可针对这个连接的输入流(InputStream)进行读操作,也可以针对这个连接的输出流(OutputStream)进行写操作,这时需要调用方法setDoOutput将输入属性设置为真(true),指定该连接后写入内容。
4、使用URLConnection类进行网络通信的基本步骤:
1)创建URLConnection类的对象
第一步:建立URL对象;第二步:调用这个对象的openConnection方法,返回一个对应其URL地址的URLConnection对象。
2)建立输入输出数据流
利用URLConnection类的方法getInputStream和getOutputStream获取输入输出数据流。
3)从远程计算机节点上读取信息或者写入信息