模拟试题:Java网络编程之URI、URL研究专题五
2013-03-18来源/作者:卫凯点击次数:632
在专题的上篇java网络编程之uri、url研究专题中我们介绍了uri、url的慨念和体系结构,以及如何使用uri在本文中我将继续向大家介绍如何使用url和mime(多用途的网际邮件扩充协议)的概念以及它如何与url发生联系的。
使用url
网络api通过提供url类让我们能在源代码层使用url。每一个url对象都封装了资源的标识符和协议处理程序。前面的技巧显示了获得url对象的途径之一是调用uri对象的tourl()方法。但是这种选择不一定方便(为什么在需要url对象的时候必须建立uri对象呢?)。
作为代替,你可以调用url构造函数来建立url对象。你也可以调用url的方法来提取url的组件,打开一个输入流(input stream)从资源中读取信息,获得某个能方便检索资源数据的对象的引用,比较两个url对象中的url,获得到资源的连接对象,该连接对象允许代码了解(并写入)更多的资源的信息。
url类有六个构造函数。其中最简单的是url(string url),它有一个string类型的参数,把url分解为自己的组件,并把这些组件存储在一个新的url对象中。如果某个url没有包含协议处理程序或该url的协议是未知的,其它的五个构造函数会产生一个java.net.malformedurlexception对象。
下面的代码片断演示了使用url(string url)建立一个url对象,该对象封装了一个简单的url组件和http协议处理程序。
url url = new url ('http://www.informit.com');
一旦拥有了url对象,你就可以使用getauthority()、getdefaultport()、 getfile()、 gethost()、 getpath()、getport()、 getprotocol()、getquery()、getref()和getuserinfo(). the getdefaultport()等方法提取各种组件。如果url中没有指定端口的部分,getdefaultport()方法返回url对象的协议处理程序使用(资源定位)的默认端口。
getfile()方法返回路径和查询组件的结合体。getprotocol()方法返回决定资源的连接类型(例如http、mailto、ftp)的协议的名称。getref()方法返回url的部分片断(我们所知道的引用)。最后,getuserinfo()方法返回授权机构组件的用户信息部分。
在这些url组件提取方法中,如果某些组件不存在(如果没有给url对象的协议处理程序指定默认的端口,它也返回-1),这些方法就返回null或-1。
作为这些组件提取方法的补充,你还可以调用openstream()方法检索java.io.inputstream引用。使用这种引用,你可以用面向字节的方式读取资源。
列表4是urldemo1的源代码。该程序从命令行参数建立了一个url对象,调用url组件提取方法来检索该url的组件,调用url的openstream()方法打开与资源的连接并返回一个用于从资源读取字节数据的inputstream引用,读取/打印这些字节,关闭输入流。
列表4: urldemo1.java
// urldemo1.java
import java.io.*;
import java.net.*;
class urldemo1
{
ublic static void main (string [] args) throws ioexception
{
if (args.length != 1)
{
system.err.println ('usage: java urldemo1 url');
return;
}
使用url
网络api通过提供url类让我们能在源代码层使用url。每一个url对象都封装了资源的标识符和协议处理程序。前面的技巧显示了获得url对象的途径之一是调用uri对象的tourl()方法。但是这种选择不一定方便(为什么在需要url对象的时候必须建立uri对象呢?)。
作为代替,你可以调用url构造函数来建立url对象。你也可以调用url的方法来提取url的组件,打开一个输入流(input stream)从资源中读取信息,获得某个能方便检索资源数据的对象的引用,比较两个url对象中的url,获得到资源的连接对象,该连接对象允许代码了解(并写入)更多的资源的信息。
url类有六个构造函数。其中最简单的是url(string url),它有一个string类型的参数,把url分解为自己的组件,并把这些组件存储在一个新的url对象中。如果某个url没有包含协议处理程序或该url的协议是未知的,其它的五个构造函数会产生一个java.net.malformedurlexception对象。
下面的代码片断演示了使用url(string url)建立一个url对象,该对象封装了一个简单的url组件和http协议处理程序。
url url = new url ('http://www.informit.com');
一旦拥有了url对象,你就可以使用getauthority()、getdefaultport()、 getfile()、 gethost()、 getpath()、getport()、 getprotocol()、getquery()、getref()和getuserinfo(). the getdefaultport()等方法提取各种组件。如果url中没有指定端口的部分,getdefaultport()方法返回url对象的协议处理程序使用(资源定位)的默认端口。
getfile()方法返回路径和查询组件的结合体。getprotocol()方法返回决定资源的连接类型(例如http、mailto、ftp)的协议的名称。getref()方法返回url的部分片断(我们所知道的引用)。最后,getuserinfo()方法返回授权机构组件的用户信息部分。
在这些url组件提取方法中,如果某些组件不存在(如果没有给url对象的协议处理程序指定默认的端口,它也返回-1),这些方法就返回null或-1。
作为这些组件提取方法的补充,你还可以调用openstream()方法检索java.io.inputstream引用。使用这种引用,你可以用面向字节的方式读取资源。
列表4是urldemo1的源代码。该程序从命令行参数建立了一个url对象,调用url组件提取方法来检索该url的组件,调用url的openstream()方法打开与资源的连接并返回一个用于从资源读取字节数据的inputstream引用,读取/打印这些字节,关闭输入流。
列表4: urldemo1.java
// urldemo1.java
import java.io.*;
import java.net.*;
class urldemo1
{
ublic static void main (string [] args) throws ioexception
{
if (args.length != 1)
{
system.err.println ('usage: java urldemo1 url');
return;
}