|
[书名]Visual Basic网络高级编程
[出版年]2001
[作者]汪晓平
[出版社]人民邮电出版社
这是一本关于如何用Visual Basic开发网络程序的好书
书中针对常用的网络应用如FTP,HTTP,Telnet,上传,下载等展开讨论,每部分都有至少一个例子
可以说是学习Visual Basic网络编程高级应用的一本不错的书籍。
下面是我对于本书的一些摘要:
1.请求(Request)
1.1Get
Get方法将要上传的数据附在URL之后,以问号“?”隔开,数据以name=value对偶形式出现,如有多个数据对,使用\"&\"隔开
如:
GET /song.asp?starid=14&type_id=25 HTTP/1.1
这种方法在下载WEB邮箱中的附件时很有用。有时会因为网络速度慢而使用WEB浏览器打不开WEB邮箱上的附件,如果仔细观察,发现E-mail信箱中的附件都提供了一个链接如:
http://202.96.44.25/cgi/ldmsapp?funcid=readp&websid=FALfJkui&mid=SM18XV&part=2
所有附件都是请求http://202.96.44.25/cgi/ldmsapp文件,只是对于不同的附件后面提供的参数值不一样。可以使用GET方式将请求的字符串发送给服务器,服务器将会根据上传的数据返回指定的附件内容。如果一次请求不能全部接收完成,可以通过断点续传再次下载剩余的数据。
GET方法将数据附在URL后作为URL的一部分传递,因此受URL的最大长度限制为1024字节。如果要上载较多的数据如一个文件,就用POST方法。
1.2POST
POST方式提交的请求消息中通常含有消息体,通过消息体将数据传递给服务器。一般是传递用户输入的数据
1.2.1请求消息
1.2.1.1 构造最小的请求消息
RFC2068中规定的最小HTTP1.1请求必须由两行文本组成,请求行和HOST标题字段:
GET /index.htm HTTP/1.1
HOST:10.11.111.119
请求行的一般格式为:
请求方法(GET|POST|HEAD等)相对URL|绝对URL HTTP版本号。
对于HTTP1.1中,若无HOST行,则产生400错误:
HTTP/1.1 400 Bad Request
2.响应(Response)
响应消息由:消息头和消息体组成
2.1 状态行
处于响应消息的第一行,由HTTP版本号、响应码和响应描述文本构成,中间用空格相隔
如:HTTP/1.1 200 OK
响应码最重要,客户端主要从服务器返回的响应码了解以客户端所作响应的意思。
要了解所有响应码,请参考RFC2068
2.2标题字段
分为:响应标题和实体标题
2.2.1响应标题
利用响应标题可以给客户端返回除响应行之外的信息
HTTP 1.1定义了9种响应标题:Age,Location,Proxy-Authenticate,Public,Retry-After,Server,Vary,Warning和WWW-Authenticate。下面是常用的几个:
2.2.1.1Location标题
表示请求URL的实际位置,使用绝对URL,通常用于3××的响应之中,如下面的302响应的消息头,表明请求的资源已经被移到另一个URL
了:
HTTP/1.1 302 Object moved
Server:Microsoft-IIS/4.0
Date:Mon,27 Nov 2000 07:33:20 GMT
Connection:close
Location:http://202.109.73.177/~netboy/good_night/daniel05.mp3
Content-Type:text/html
Cache-control:private
Transfer-Encoding:chunked
2.2.1.2 Server标题
指定服务器使用的软件名称及版本信息
Server:Apache/1.3.14(Unix)PHP/4.0.3
2.2.1.3 WWW-Authenticate标题
当客户端请求受限资源时,服务器要求客户端进行身份认证,响应的消息中含有该标题,用于表明资源所在的区域。该标题必须包含在服务器的401响应消息中,并至少含有一个指示请求URL可用的认证方法。
下面标题字段及内容采用基本认证方法,受保护的资源所在区域名称为“Busyzhong's BigFox Server1.0\"
WWW-authenticate:basic realm=\"Busyzhong's BigFox Server 1.0\"
2.2.2 实体标题
用于描述消息中所含有的实体数据的信息。
有12个实体标题:Allow、Content-Type,Content-Length,Content-Encoding,Expire,Last-Modified,Content-Base,Content-Language,Content-Location,Content-MD5,Content-Range和Etag。
下面是常用的几个实体标题
2.2.2.1 Allow
在请求的URL中,用于指示客户端对资源可以使用的方法,如:
Allow:GET,HEAD
该字段一定要与405响应码一起出现,用于提示客户端请求的资源所允许的请求方法。
2.2.2.2 Content-Type
用于描述消息内所包含的实体的数据类型。一般Web浏览器检查该标题,然后调用相应的应用程序查看实体。如:
Content-Type:text/html;charset=US-ASCII
关于媒体类型,可参见E-mail协议中关于MIME的内容
2.2.2.3 Content-Length
与Content-Type一起使用,用于描述消息内任何类型的实体大小(字节数),如:
Content-Length:121
Connection:close
Content-Type:image/gif
指明实体数据为image/gif类型,长度121个字节
2.2.2.4 Expires
该标题影响资源的缓冲方式,为资源指定一个过期日期和时间。这对于那些规则地更新,产生数据的资源,如CGI过程,以及那些在某个时间后消失的资源很有用。
2.2.2.5 Last-Modified
说明资源最近修改的时间,计算时间的方法依资源的类型而定。若资源为一文件,表示该文件最近修改的时间;客户端资源副本比Last-Modified指定的时间要早,则客户端放弃本地副本,请求更新;指示的时间比响应消息的创建时间(Date标题指定的时间)要晚,则Last-Modified时间被设定为创建消息的时间。
2.2.3 实体数据
在消息数据的事部分,用一个空白行与消息头隔开。所以编程时,可判断连续两个Crlf的位置之后,就是实体数据开始的地方。
3.访问认证
HTTP认证分为:基本认证和摘要认证,下面只介绍基本认证
(1)客户端请求访问保护资源
首先在浏览器地址栏中请求访问受保护的资源:http://10.11.111.119:81/up.jpg。浏览器在连接主机10.11.111.119:81后发送的请求消息如下:
GET /up.jpg HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, */*
Referer: http://10.11.111.119:81/
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
Host: 10.11.111.119:81 Connection: Keep-Alive
(2)服务器在接到请求之后,向客户端发送 401 响应消息通知客户端该请求为未认证请求。
服务器在接到客户端对受保护资源的请求后,检查到客户端中没有进行身份验证的标题字段 Authorization 及其内容,于是向客户端发送带有 WWW-Authenticate 的字段 401 响应消息,通知客户端发送身份验证。WWW-Authenticate 的格式及意思如下:
WWW-Authenticate: basic realm=\"Busyzhong's BigFox Server1.0\"
Basic 说明需要的是基本认证,realm 后面的字符串表示受保护的资源名称。 如下面的消息:
HTTP/1.1 401 Unauthorized
Server: BigFox Server1.0
Connection: close
Date: Mon, 1999-12-27 16:08:11 12T
WWW-authenticate: basic realm=\"Busyzhong's BigFox Server1.0\"
Content-Type: text/html
Content-Length: 782
.td1 {FONT-FAMILY: 宋体, Arial, Times New Roman; FONT-SIZE: 9pt; FONT-WEIGHT: strong;COLOR: red} .td2 {FONT-FAMILY: 宋体, Arial, Times New Roman; FONT-SIZE: 9pt; FONT-WEIGHT: normal} .A:link {FONT-SIZE: 9pt; TEXT-DECORATION: none}
.A:visited {COLOR: #0000ff; FONT-SIZE: 9pt; TEXT-DECORATION: none} .A:active {COLOR: #0000ff; FONT-SIZE: 9pt; TEXT-DECORATION: none} .A:hover {COLOR: red; TEXT-DECORATION: none}
size=3 face= 幼 圆 >BigFox Web Server V1.0( 大 尾 狐 Web 服 务 器 ) 管理 者 :busyzhong 需要用户输入密码进行认证
消息中往往带有媒体类型为 TEXT/HTML 的实体数据,用作没有通过验证的提示。
(3)客户端接到 401 响应后,发送认证的信任状。
客户端接到 401 响应后,发送认证的信任状,如果是使用 IE 浏览器,则会弹出如图 4-3所示的请求输入认证用户名和密码的对话框
在输入用户名和密码后,按下确定按钮,浏览器将会发送带有身份认证的标题字段的消息给服务器
(4)服务器再次响应
服务器接到有认证信任状的请求后,判断身份是否正确,如果正确,发送 200 响应码及请求资源的消息。服务器的响应如下:
HTTP/1.1 200 OK
Server: BigFox Server1.0
Connection: close
Date: Mon, 1999-12-27 16:11:36 12T
Content-Type: image/gif
Accept-Ranges: bytes
Last-Modified: Tue, 2000-04-25 13:26:40
Content-Length: 878
… |
|