XMLHttp WinHttpRequest 用法总结

来源:互联网 发布:消灭都市wiki排位数据 编辑:程序博客网 时间:2024/05/21 14:52

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

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

示例代码如下:

  1. Set request = CreateObject("WinHttp.WinHttpRequest.5.1") '根据对象签名创建对象
  2. request.open "POST", url, False 'POST 或 GET 方式打开对象
  3. request.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
  4. request.setRequestHeader "Accept", "*/*"
  5. request.setRequestHeader "Referer", "http://www.baidu.com" '提交来路
  6. request.setRequestHeader "Accept-Language", "zh-cn"
  7. request.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2;)"
  8. request.setRequestHeader "Connection", "Keep-Alive"
  9. request.send (data) '发送数据
  10. 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 的问题请注意,免得浪费时间~~~~~

原创粉丝点击