Java Network Programming 笔记(3)
Java Network Programming 笔记
n5
三 利用URL类获取数据
chapter 7 Retrieving Data with URLs
1 建立URL对象
当JVM不支持url的协议时抛出MalformedURLException
(1)public URL(String url) throws MalformedURLException
(2)public URL(String protocol, String hostname, String file) throws MalformedURLException
此构造器设置port为-1,所以协议的默认端口将被使用。
file参数应该以\"/\"开始,包含一个路径,文件名,和一个可选的锚点
例如: URL u = new URL(\"http\",\"www.eff.org\",\"/blueribbon.html#intro\") ;
(3)public URL(String protocol,String host, int port, String file) throws MalformedURLException
可以指定端口,其他和第二个构造器相同
(4)public URL(URL base,String relative) throws MalformedURLException
从一个相对的URL地址和一个base URL对象创建一个绝对URL对象
例如:
try{
URL u1 = new URL(\"http://www.myweb.com/java/index.html\") ;
URL u2 = new URL(u1,\"test.html\") ;
}
catch(MalformedURLException e){}
去掉u1的文件名,然后加上新文件名test.html,就构成了u2
2得到URL的组成
getFile() 返回总的路径(并非文件名)即为URL中从第一个\"/\"开始到\"#\"为止的内容。如果没有file部分,java1.3返回一个空字符串,java1.1,1.2返回\"/\"
getHost() 返回主机名,不包含user:user这样的用户信息
getPort() 如果URL中没指定端口,则返回-1
getProtocol()
getRef() 返回指定的锚点,如果没有锚点返回null
//since java1.3
getQuery()
getPath() 和getFile()完全相同
getUserInfo()
getAuthority()
3 从URL得到数据
(1) public final InputStream openStream() throws IOException
打开URL,得到一个InputStream得到数据
(2) public URLConnection openConnection() throws IOException
打开URL,得到一个URLConnection对象,URLConnection对象表示网络资源的一个开放连接。当想要直接与服务器通讯时可使用该方法。URLConnection可以得到服务器发送的任何东西,而不仅仅是文档本身。而且还可以写数据。
(3) public final Object getContent() throws IOException
将从URL下载来的数据看作一个对象,比如图片,文本,声音,或一个InputStream对于不能理解的对象。可以用instance of判断到底是哪种对象,并cast为该对象。
(4) public final Object getContent(Class[] classes) throws IOException //java1.3
可指定哪些种类的class被返回。该方法按照classes数组的顺序依次尝试返回内容。
4 工具方法
public boolean sameFile(URL other)
测试两个URL是否指向同一个文件。
public String toExternalForm()
返回一个人类可读的String表示URL,和toString()方法等同。因此不常用这个方法。
5 public boolean equals(Object o)
相等的含义:Object o也是一个URL对象,两个URL都指向同一个file(sameFile()定义的),并且两个URL有相同的引用或都是null。