打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
XMLHTTPRequest的方法和属性介绍

XMLHTTPRequest的方法和属性介绍

2009年3月5日

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

XMLHTTPRequest对象

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

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

Dim HttpReq As New MSXML2.XMLHTTP30HttpReq.open "GET", "http://localhost/books.xml", FalseHttpReq.sendMsgBox HttpReq.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 XMLHTTP30Dim book As IXMLDOMNodexmlHttp.open "GET", "http://localhost/books.xml", FalsexmlHttp.sendSet book = xmlHttp.responseXML.selectSingleNode("//book[@id='bk101']")MsgBox book.xml

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

Send方法

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

oXMLHttpRequest.send(varBody)

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

Dim xmlhttp As New Msxml2.xmlhttpxmlhttp.open "GET", "http://localhost/sample.xml", Falsexmlhttp.sendMsgBox xmlhttp.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.XMLHTTP30xmlhttp.open "GET", "http://localhost/sample.xml", Falsexmlhttp.sendMsgBox xmlhttp.getResponseHeader("Server")

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

getAllResponseHeaders方法

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

strValue = oXMLHttpRequest.getAllResponseHeaders

示例:

Dim xmlhttp As New MSXML2.XMLHTTP30xmlhttp.open "GET", "http://localhost/sample.xml", Falsexmlhttp.sendMsgBox xmlhttp.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.ServerXMLHTTP30xmlServerHttp.open "GET", "http://localhost/books.xml", FalsexmlServerHttp.sendMsgBox xmlServerHttp.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.XMLHTTP30xmlhttp.open "GET", "http://localhost/books.xml", Falsexmlhttp.sendMsgBox xmlhttp.Status

responseBody属性

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

strValue = oXMLHttpRequest.responseBody

示例:

Dim xmlhttp As New Msxml2.XMLHTTP50xmlhttp.open "GET", "http://localhost/books.xml", Falsexmlhttp.sendMsgBox 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.XMLHTTP30xmlhttp.open "GET", "http://localhost/books.xml", Falsexmlhttp.sendMsgBox xmlhttp.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.XMLHTTP30xmlhttp.open "GET", "http://localhost/books.xml", Falsexmlhttp.sendMsgBox xmlhttp.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 this operation is not yet available.”

onreadystatechange属性

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

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
XMLHTTP对象参考
【XMLHTTPRequest属性及方法详解教程】,XMLHTTPRequest属性及方法...
浅谈XMLHTTP对象(属性和方法)-VBA抓取网页数据1
XMLHTTPRequest参考手册
Php
完全了解AJAX
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服