2 访问Internet网络资源
java.net包中还有URL、URLDecoder、URLEncoder、URLConnection、HttpURLCcnnection等类。
URL(Uniform Resource Locator) 统一资源定位符:
URL的基本组成:协议、主机名、端口号、资源名。
相对URl,例如”、”,”./a.html”,”../../a.html”,”a.html”.
URL的编码规则:
--将空格转换成为加号(+);
--对0-9,a-z,A-Z之间的字符保持不变;
--对于所用其他的字符,用这个字符的当前字符集编码在内存中的十六进制格式表示,并在每个字节前加上一个百分号(%)。如字符“+”用%2B表示,字符“=”用%3D表示,字符“&”用%26表示,每个中文字符在内存中占两个字节,字符“中”用%D6%D0表示, 字符“国”用%B9%FA表示;
Java.net包中提供了URLEncoder和URLDecoder这两个类,来实现URL编码和解码。
HTTP协议的会话过程:
基于HTTP1.0协议的客户机与服务器的信息交换过程:
基于HTTP1.1协议的客户机与服务器的信息交换过程:
HTTP请求消息
一个完整的请求消息包括:一个请求行、若干消息头、以及实体内容。例如:
GET /artiles/news/todays.asp HTTP/1.1
Accept: */*
Accept-Language: en-us
Connection: Keep-Alive
Host: localhost
Refere: http://localhost/link.asp
User-Agen: Mozilla/4.0(compatible;MSIE 5.5;Windows NT 5.0)
Accept-Encoding: gzip,deflate
HTTP 响应消息
一个完整的响应消息包括:一个状态行、若干消息头、以及实体内容。例如:
HTTP、1.1 200 OK
Server: Microsoft-IIS/5.0
Date: THU,13,Jul,2000 05:46:53 GMT
Content-Length: 2291
Content-Type: text/html
Set-Cookie: ASPSESSIONIDQQGGGNCG=LKLDDDKCINFLDMFHCBCMFLJ;path=/
Cache-control: private
<html>
<body>
… …
了解几个HTTP消息头
Connection:用于指定处理完本次请求/响应后,客户端与服务器是否连续保持连接。设置值可以为Keep-Alive和close。
Accept-Language:用于指出客户机期望服务器返回的文档所使用的国家语言,可以指定多个以逗号分隔的国家语言。
Content-Length:用于表示实体内容的长度(字节数)。
Range:用于指定服务器只需返回文档中的部分内容及内容范围,有一下几种使用格式:
1)Range: bytes=100-599
2)Range: bytes=100-
3)Range: bytes=-100
Content-Range:用于指定服务器返回的部分实体内容的位置信息,例如:
Content-Range: bytes 2543-4532/7898
UPL类:
构造函数(都可以引发MaformedURLExceptin异常)
public URL(String spec)
public URL(String protocol,String host,int port,String file)
public URL(String protocol,String host,int port,String file,URLStreamHandler handler)
public URl(URL context,String spec)
方法:getProtocol、getHost、getPort、getFile等方法。
openConnection方法返回URLConnection对象。
工厂设计模式:
工厂设计模式的工作原理:
URL类的setURLStreamHandlerFactory(URlStreamHandlerFactory fac)静态方法。
URLStreamHandlerFactory类的createURlStreamHandler(String protocol)方法。
URLConnection和HttpURLConnection类:
URLConnection的连接过程。
setRequestProperty方法。
getHeaderFields方法。
getInputStream和getOutputStream方法。
getHeaderField、getContentLength、getContentEnocoding、getContentType等方法。
一个HTTP连接可以被多个HttpURlConnectin实例对象共享,调用HttpURLConnection的disconnect方法可以关闭地城共享网络。