您的位置:首页 > 理论基础 > 计算机网络

XMLHttp WinHttpRequest 用法总结

2013-10-15 20:48 423 查看
Windows 自带能实现 HTTP 请求响应的组件,比如:“MSXML2.XMLHTTP”、“Microsoft.XMLHTTP”、“WinHttp.WinHttpRequest.5.1”、WinSock、INET ,都能用,但用法不同,下面简单聊一下前三个:

前三个的使用方式基本相同,都是先创建对象(CreateObject),然后以需要的方式打开(.open),再设置请求头部(.setRequestHeaders),弄好就可以发送了(.send),等待响应得到响应结果(.responseText)。

示例代码如下:

Set request = CreateObject("WinHttp.WinHttpRequest.5.1") '根据对象签名创建对象

request.open "POST", url, False 'POST 或 GET 方式打开对象

request.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"

request.setRequestHeader "Accept", "*/*"

request.setRequestHeader "Referer", "http://www.baidu.com" '提交来路

request.setRequestHeader "Accept-Language", "zh-cn"

request.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2;)"

request.setRequestHeader "Connection", "Keep-Alive"

request.send (data) '发送数据

result = request.responseText '返回数据

解读:

第 1 行:根据对象在系统中的签名,用 CreateObject 方式创建对象。但不同对象有不同特性,后详;

第 2 行:以指定方式(POST 或 GET)打开对象,并设置 URL 和 是否异步传输;

第 3-8 行:设置 Http 请求的头部,按常规逐一设置即可。但,千万注意,MSXML2.XMLHTTP 和 Microsoft.XMLHTTP 是不支持 referer 的,设置了也没用!!

第 9 行 如果是 GET 方式,则 request.send 即可,如果是 POST 方式,则要跟上需要包体(a=1&b=2&c=3)做参数,但,最坑爹的是:必须要写成
request.send (data),不加括号都不行,提示参数不正确(incorrect parameter)!这是违反 VB 程序书写习惯的。可怜的我,看到一直提示
参数不正确,找 google 查了够半天,终于找到是括号问题。此时此刻,没有技术性的百度被无视了


第 10 行得到响应结果,根据返回数据类型,分别使用 responseBody,responseText,responseXML 即可。

总结:

XMLHTTP 是系统内置的轻量级控件,Ajax 在网页中的实现也主要是依赖它。适合轻型客户端的快速开发,但 referer 和 send 的问题请注意,免得浪费时间~~~~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: