要调用远程网站的ASP和CGI等程序,给他们传一些参数然后取得一些返回值,真的是有用之极啊。除了进行通讯外我们还可以拿它来对自己的网站进行压力测试。MS 的WAS(Web Application Stress Test Tool)是压力测试网站比较简单而实用的工具,其实我们也可以自己写一个,设好线程,通过HTTP协议不断请求然后记录返回值就OK了^_^。
1 HTTP头:
HTTP 请求和 HTTP 响应都使用头发送有关 HTTP 消息的信息。头由一系列行组成,每行都包含名称,然后依次是冒号、空格、值。字段可按任何顺序排列。某些头字段既能用于请求头也能用于响应头,而另一些头字段只能用于其中之一。
许多请求头字段都允许客户端在值部分指定多个可接受的选项,有时甚至可以对这些选项的首选项进行排名。多个项以逗号分隔。例如,客户端可以发送包含“Content-Encoding: gzip, compress,”的请求头,表示可以接受各种压缩类型。如果服务器的响应正文使用 gzip 编码,其响应头中将包含“Content-Encoding: gzip”。
请求头示例
以下是 HTTP 请求的简单示例。
GET /articles/news/today.asp HTTP/1.1
Accept: */*
Accept-Language: en-us
Connection: Keep-Alive
Host: localhost
Referer: http://localhost/links.asp
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
Accept-Encoding: gzip, deflate
该请求具有请求行,其中包括方法 (GET)、资源路径 (/articles/news/today.asp) 和 HTTP 版本 (HTTP/1.1)。由于该请求没有正文,故所有请求行后面的内容都是头的一部分。紧接着头之后是一个空行,表示头已结束。
响应头示例
Web 服务器可以通过多种方式响应前一个请求。假设文件是可以访问的,并且用户具有查看该文件的权限,则响应类似于:
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=LKLDFFKCINFLDMFHCBCBMFLJ; path=/
Cache-control: private
<HTML>
<BODY>
具体可见MSDN2003,地址为:ms-help://MS.MSDNQTR.2003FEB.2052/act/htm/actml_ref_href.htm
2 状态码:
请求时需要得到状态码以确定当前的状态,例如200代表正常,404代表未找到。
具体可参见MSDN2003,地址为:ms-help://MS.MSDNQTR.2003FEB.2052/act/htm/actml_ref_hsco.htm
3 Get与Post:
HTTP-GET 和 HTTP-POST 是使用 HTTP(超文本传输协议)谓词以及与之关联的请求语义将参数作为名称/值对编码和传递的标准协议。每个协议都由一系列 HTTP 请求标头组成,这些标头用于与一些其他信息一起定义客户端向服务器请求的内容,而在成功时,服务器将用一系列 HTTP 响应标头和所请求的数据响应。
HTTP-GET 使用 application/x-www-form-urlencoded 的 MIME 类型以 URL 编码文本格式传递其参数,该 MIME 类型将被追加到处理该请求的服务器的 URL。URL 编码是一种字符编码格式,它确保传递的参数由一致的文本组成(如将空格编码为 %20)。追加的参数也称为查询字符串。例如:http://www.rising.com.cn/download.asp?id=12&page=11 这种‘?’后面带有两个参数id和page的方式即为Get请求方式。
与 HTTP-GET 类似,HTTP-POST 参数也是 URL 编码的。但是,名称/值对不是作为 URL 的一部分传递,而是在实际的 HTTP 请求消息中传递。
例如Html页面中
<form method=post action=login.asp>
<input type=text name=Username size=21>
</form>
<input type=submit value=’提交’>
当点击‘提交’后便会将名为Username的控件内容传递到action所指定的处理页面去处理,这里为login.asp页面。这种方式不在URL中传递参数,而是存储在Form中,以Post方式传递数据。