本帖最后由 爱疯 于 2011-10-26 10:13 编辑
浅谈XMLHTTP对象(属性和方法)-VBA抓取网页数据 (3)
2009-12-30 22:09:19| 分类: Microsoft Office | 标签:
|字号
大中小
[url=]订阅[/url]
responseStream属性
以Ado Stream对象的形式返回响应信息
语法
strValue = oXMLHttpRequest.responseStream;
备注
返回值为Variant类型,只读。XMLHTTP的responseStream从服务器返回一数据流入 stream(IStream)。该包含了从服务器返回的未经解码的二进制数据,因此,基于请求不同的服务器,最终会显示不同的二进制编码数据(UTF- 8, UCS-2, UCS-4, Shift_JIS等等)。如果请求的网页的数据编码不是二进制,则会发生乱码。
版本
MSXML 2.0及以上版本
responseText属性
以字符串形式返回响应信息(即我们通常见到的网页源文件)
语法
strValue = oXMLHttpRequest.responseText;
示例
Dim xmlhttp As New Msxml2.XMLHTTP30 xmlhttp.open "GET", "http://localhost/test.xml", False xmlhttp.send MsgBox xmlhttp.responseText
备注
返回值为String类型,此属性只读。
XMLHTTP尝试将响应信息解码为Unicode字符串,XMLHTTP默认将响应数据的编码定为UTF-8,如果服务器返回的数据是匹配的Unicode BOM(byte-order mark)编码,XMLHTTP可以解码任何UCS-2 (big or little endian)或者UCS-4 数据。注意,如果服务器返回的是xml文档,此属性并不处理xml文档中的编码声明。你需要使用responseXML来处理。
这个responseText属性包含客户端接收到的HTTP响应的文本内容。当readyState值为0、1或2时,responseText包含一个空字符串。当readyState值为3(正在接收)时,响应中包含客户端还未完成的响应信息。当readyState为4(已加载)时,该responseText包含完整的响应信息。
版本
MSXML 2.0及以上版本
responseXML属性
以Xml Document对象形式返回将响应信息
语法
Set objDispatch = oXMLHttpRequest.responseXML
示例
Dim xmlhttp As New Msxml2.XMLHTTP30 xmlhttp.open "GET", "http://localhost/test.xml", False xmlhttp.send MsgBox xmlhttp.responseXML.xml
备注
此属性只读,将响应信息格式化为Xml Document对象并返回。如果响应数据不是有效的XML文档,此属性本身不返回XMLDOMParseError,可以通过处理过的DOMDocument对象获取错误信息。
此responseXML属性用于当接收到完整的HTTP响应时(readyState为4)描述XML响应;如果响应实体不是有效的xml格式,则返回错误。无论何时,只要readyState值不为4,那么该responseXML的值也会返回null。
如果Content-Type头部并不包含以下这些媒体类型之一:Content-Type头部指定MIME(媒体)类型为text/xml,application/xml或以+xml结尾,例如,"application/rss+xml",那么responseXML的值为null。
其实,这个responseXML属性值是一个文档接口类型的对象,用来描述被分析的文档。如果文档不能被分析(例如,如果文档不是良构的或不支持文档相应的字符编码),那么responseXML的值将为null。
版本
MSXML 2.0及以上版本
|