XMLHTTPRequest的方法和属性介绍

使用XMLHTTPRequest对象的好处是可以在后台下载网页数据,不需要启动浏览器程序,并且可以下载各种类型的网页内容,例如XML文档、Javascript数据以及图像文件等。
这里先介绍一下XMLHTTPRequest对象的方法和属性。

XMLHTTPRequest对象

XMLHTTPRequest对象提供客户端和HTTP服务器之间通讯的协议支持。

下面的Visual Basic例子创建一个XMLHTTP对象,并向服务器请求一个XML文档。服务器返回XML文档并在消息框中显示。

Dim HttpReq As New MSXML2.XMLHTTP30

HttpReq.open "GET", "http://localhost/books.xml", False

HttpReq.send

MsgBoxHttpReq.responseText

一个客户机器可以使用XMLHTTP对象(MSXML2.XMLHTTP.3.0)发送一个任意HTTP请求,接收响应并使用Microsoft XML Document Object Model(DOM)解析响应。

这个对象集成到Microsoft XML Core Services(MSXML)中,支持直接从MSXML DOM对象发送请求主体,并直接在MSXML DOM对象中解析响应。

一般的使用顺序是:调用Open方法,通过setRequestHeader方法设置自定义头部信息,接着调用send方法,然后检查四个不同的响应属性中的一个。

XMLHTTPRequest的方法

Open方法

初始化一个MSXML2.XMLHTTP的请求,并指定请求的方法、URL和身份验证信息。
语法:

oXMLHttpRequest.open(bstrMethod,bstrUrl,varAsync,bstrUser,bstrPassword)

参数:
bstrMethod

表示用来打开连接的HTTP递交方法,如GET,POST,PUT或者PROPFIND。对XMLHTTP来说,这个参数大小写无关。
bstrUrl
表示请求的URL。可以是绝对URL,例如“http://Myserver/Mypath/Myfile.asp”,也可以是相对URL,例如“../Mypath/Myfile.asp”。
varAsync[optional]
一个Boolean值表示是否是异步调用。默认是True,也就是说调用立刻返回。如果设置为True,需要在onreadystatechange属性添加回调函数,这样你可以知道什么时候Send调用结束。
bstrUser[optional]
验证的用户名称。如果这个参数是Null(”")或者省略,而网站需要用户证明,将显示一个登录窗口。
bstrPassword[optional]
验证的用户密码。如果bstrUser是Null(”")或者省略,这个参数将被忽略。

下面的例子创建一个XMLHTTP对象,然后使用Open语句获得本地IIS Web服务器上的books.xml文件的副本。后面的代码选择元素并显示在消息窗口上。

Dim xmlHttp As New XMLHTTP30

Dim book AsIXMLDOMNode

xmlHttp.open "GET", "http://localhost/books.xml", False

xmlHttp.send

Set book =xmlHttp.responseXML.selectSingleNode("//book[@id='bk101']")

MsgBox book.xml

调用Open方法后,必须调用send方法发送请求和数据给服务器。

Send方法

发送一个HTTP请求到服务器并解释一个响应。
语法:

oXMLHttpRequest.send(varBody)

参数:
varBody

表示和请求一起发送的消息主体。
示例:

Dim xmlhttp As New Msxml2.xmlhttp

xmlhttp.open "GET", "http://localhost/sample.xml", False

xmlhttp.send

MsgBoxxmlhttp.responseXML.xml

取决于Open方法中bAsync参数的值,这个Send方法可以说异步或同步的。如果Open方法使用bAsync=False调用,这个调用直到整个响应被接收后或者超时后才返回。

Abort方法

取消当前的Http请求。
语法:

oXMLHttpRequest.abort

请求将会被返回为UNINITIALIZED状态,下次调用时必须使用Open方法。

setRequestHeader方法

指定一个HTTP头部信息的名称。
语法:

oXMLHttpRequest.setRequestHeader(bstrHeader,bstrValue)

参数:
bstrHeader 一个字符串。需设置的头部名称;例如:“depth”。这个参数不能包括冒号,应该是HTTP头部的实际字符串。
bstrValue 一个字符串。需设置的头部值;例如:“infinity”。

如果这个名称的另一个头部已经存在,将把这个值添加到前一个头部。

getResponseHeader方法

从返回信息中获取一个HTTP头部的值
语法:

strValue =oXMLHttpRequest.getResponseHeader(bstrHeader)

参数:
bstrHeader
 一般包含区分大小写的头部名称的字符串
示例:

Dim xmlhttp As New Msxml2.XMLHTTP30

xmlhttp.open "GET", "http://localhost/sample.xml", False

xmlhttp.send

MsgBoxxmlhttp.getResponseHeader("Server")

这个方法的结果只有在send方法成功完成之后才有效。xmlhttp.getResponseHeader(”Content-Type”)返回字符串”text/xml”,假设服务器设置了”text/xml”为内容类型。你可以使用getAllResponseHeaders方法来查询完整的头部清单。

getAllResponseHeaders方法

获取所有HTTP头部的值,返回一个包含查询头部信息的字符串。
语法:

strValue =oXMLHttpRequest.getAllResponseHeaders

示例:

Dim xmlhttp As New MSXML2.XMLHTTP30

xmlhttp.open "GET", "http://localhost/sample.xml", False

xmlhttp.send

MsgBoxxmlhttp.getAllResponseHeaders()

这个例子返回所得到的由Web(HTTP)服务器返回的页面头部信息。例如,你的输出应该包括下面类型的头部信息:

Server:Microsoft-IIS/5.1
X-Powered-By:ASP.NET
Date:Sat, 07 Jun 2003 23:23:06 GMT
Content-Type:text/xml
Accept-Ranges:bytes
Last Modified:Sat, 06 Jun 2003 17:19:04 GMT
ETag:”a0e2eeba4f2cc31:97f”
Content-Length:9

每个头部名称/值对通过换行符分开(VB中是vbCrLf)。
这个方法的结果只有在send方法成功完成后才有效。

XMLHTTPRequest对象的属性

Status属性

表示一个请求返回的HTTP状态代码,只读。
语法:

lValue =oXMLHttpRequest.status

示例:

Dim xmlServerHttp As New Msxml2.ServerXMLHTTP30

xmlServerHttp.open "GET", "http://localhost/books.xml", False

xmlServerHttp.send

MsgBoxxmlServerHttp.status

一个标准的HTTP状态代码是一个长整型,这个值只有在send方法成功返回后才有效。返回状态代码描述如下表:

值 描述
100 Continue
101 Switching protocols
200 OK
201 Created
202 Accepted
203 Non-Authoritative Information
204 No Content
205 Reset Content
206 Partial Content
300 Multiple Choices
301 Moved Permanently
302 Found
303 See Other
304 Not Modified
305 Use Proxy
307 Temporary Redirect
400 Bad Request
401 Unauthorized
402 Payment Required
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable
407 Proxy Authentication Required
408 Request Timeout
409 Conflict
410 Gone
411 Length Required
412 Precondition Failed
413 Request Entity Too Large
414 Request-URI Too Long
415 Unsupported Media Type
416 Requested Range Not Suitable
417 Expectation Failed
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Timeout
505 HTTP Version Not Supported

statusText属性

表示HTTP响应行状态,只读,这个值只有在send方法成功返回后才有效。
语法:

strValue =oXMLHttpRequest.statusText

示例:

Dim xmlhttp As New Msxml2.XMLHTTP30

xmlhttp.open "GET", "http://localhost/books.xml", False

xmlhttp.send

MsgBox xmlhttp.Status

responseBody属性

只是表示返回的HTTP响应的几种格式的其中一种。
语法:

strValue =oXMLHttpRequest.responseBody

示例:

Dim xmlhttp As New Msxml2.XMLHTTP50

xmlhttp.open "GET", "http://localhost/books.xml", False

xmlhttp.send

MsgBox xmlhttp.responseBody

这个属性是Variant类型。只读属性。以一个无符号的字节数组表示响应的主体。它包含直接从服务器收到的原始未解码的字节。因此,根据服务器所发送的数据,它可以是以下类型的二进制编码数据(UTF-8,UCS-2,UCS-4,Shift_JIS等等)。

responseStream属性

只是表示返回的HTTP响应的几种格式的其中一种。
语法:

strValue =oXMLHttpRequest.responseStream

这个属性是Variant类型。只读属性。以IStream表示响应的主体。这个Stream包含直接从服务器收到的原始未解码的字节。因此,根据服务器所发送的数据,它可以是以下类型的二进制编码数据(UTF-8,UCS-2,UCS-4,Shift_JIS等等)。

responseText属性

以字符串表示响应主体。
语法:

strValue =oXMLHttpRequest.responseText

示例:

Dim xmlhttp As New Msxml2.XMLHTTP30

xmlhttp.open "GET", "http://localhost/books.xml", False

xmlhttp.send

MsgBoxxmlhttp.responseText

这个属性是Variant类型。只读属性。这个属性只是表示返回的HTTP响应的几种格式的其中一种。IXMLHTTP试图将响应解码为一个Unicode字符串。它假设默认的编码是UTF-8,但只要服务器发送合适的Unicode字节顺序标识,也可以解码任何UCS-2(big or little endian)或UCS-4格式的编码数据。它不解析responseXML属性来支持XML编码。

responseXML属性

表示已经解析的响应主体。
语法:

Set objDispatch = oXMLHttpRequest.responseXML

示例:

Dim xmlhttp As New Msxml2.XMLHTTP30

xmlhttp.open "GET", "http://localhost/books.xml", False

xmlhttp.send

MsgBoxxmlhttp.responseXML.xml

只读属性。基于安全原因,解析验证功能一般被关闭以防止Microsoft XML Core Services(MSXML)试图下载文档类型定义(DTD)或XML-Data定义。如果响应主体不是有效的XML格式,这个属性返回已解析的DOMDocument对象,这样你可以访问错误信息。这个属性不返回IXMLDOMParseError本身。
如果响应由ASP页面产生而MIME类型没有被正确地使用ASP的Response.Content方法设置为所支持的MIME类型,responseXML将为空。
MSXML 6.0所支持的MIME类型包括“text/xml”,“application/xml”或者任何以“+xml”结束的类型,例如“application/rss+xml”。
MSXML 6.0之前的版本支持的MIME类型包括“text/xml”和“application/xml”。

readyState属性

表示请求的状态。
语法:

lValue =oXMLHttpRequest.readyState

返回值Variant类型,只读属性。以I4(4个字节的整型)表示请求的状态。定义如下:

0 (UNINITIALIZED)“未初始化”
对象已经创建,但没有初始化(没有调用Open方法)。

1 (LOADING) “加载中”
对象已经创建,但send方法还没有被调用。

2 (LOADED) “已经加载”
已经调用send方法,但未有状态和头部信息。

3 (INTERACTIVE) “正在接收”
部分数据已经接收。这个时候调用responseBody和responseText属性来获取部分结果将返回错误,以为状态和头部信息还未完全可用。

4 (COMPLETED) “完成”
所有数据接收完毕,可以通过responseBody和responseText属性获取全部数据。
注意:
从MSXML3.0开始,在数据加载开始但还没有结束时读取status属性(例如,在LOADED或INTERACTIVE状态)将返回下面的错误:“The data necessary to complete thisoperation is not yet available.”

onreadystatechange属性

指定当readyState属性变化时调用的事件处理过程。注意onreadystatechange用于脚本环境中,不能在Visual Basic或C++中直接调用。 

 


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值