需要捕获对象:'[object]' with MSXML2.ServerXMLHTTP.6.0
Trapping Object required: '[object]' with MSXML2.ServerXMLHTTP.6.0
我正在使用 Flickr API 和 MSXML2.ServerXMLHTTP.6.0 阅读 XML 回复。
例如:
Returns:
<rsp stat="ok">
<photos page="1" pages="847622" perpage="1" total="847622">
<photo id="8658999887" owner="46248160@N04" secret="13e2615193" server="8123" farm="9" title="cheeses" ispublic="1" isfriend="0" isfamily="0"/>
</photos>
</rsp>
我做了一些简单的ASP来设置变量值:
vurl = https://www.flickr.com/services/rest/?method=flickr.photos.search&api_key=[mykey]&text=cheese&per_page=1&sort=relevance&min_upload_date=2010-05-25
Set http = Server.CreateObject("MSXML2.ServerXMLHTTP.6.0")
http.Open "GET", vurl, False
http.Send
Set dom = http.responseXML
Set items = dom.getElementsByTagName("photos")
If NOT (items IS Nothing) Then
For Each item In items
Set tags = item.getElementsByTagName("photo")
If NOT (tags IS Nothing) Then
var_id = tags(0).getAttribute("id")
var_owner = tags(0).getAttribute("owner")
var_server = tags(0).getAttribute("server")
var_farm = tags(0).getAttribute("farm")
var_title = tags(0).getAttribute("title")
var_public = tags(0).getAttribute("public")
var_secret = tags(0).getAttribute("secret")
var_img_url2 = "https://farm"&var_farm&".staticflickr.com/"&var_server&"/"&var_id&"_"&var_secret&"_b.jpg"
var_id = ""
%>
<%
End If
Next
end if
我的问题是,如果 API 没有为搜索词返回图像 - 例如"aplogranite" XML 响应是:
<rsp stat="ok">
<photos page="1" pages="0" perpage="1" total="0"/>
</rsp>
我上面的代码returns这个错误:
Microsoft VBScript runtime error '800a01a8'
Object required: '[object]'
我尝试通过以下方式诱捕它:
Set items = dom.getElementsByTagName("photos")
If NOT (items IS Nothing) Then...
但是还是报错
我想知道如何捕获错误以便处理 XML 不包含 "photo" 标记中的任何数据的情况?
似乎在没有元素匹配标签名称参数的情况下,getElementsByTagName()
return 不是 Nothing
,而是空集合。因此,请尝试检查 return 值的 Length
:
If tags.Length > 0 Then
....
End If
或者测试 Nothing
的第一个元素:
If Not (tags(0) Is Nothing) Then
....
End If
我正在使用 Flickr API 和 MSXML2.ServerXMLHTTP.6.0 阅读 XML 回复。
例如:
Returns:
<rsp stat="ok">
<photos page="1" pages="847622" perpage="1" total="847622">
<photo id="8658999887" owner="46248160@N04" secret="13e2615193" server="8123" farm="9" title="cheeses" ispublic="1" isfriend="0" isfamily="0"/>
</photos>
</rsp>
我做了一些简单的ASP来设置变量值:
vurl = https://www.flickr.com/services/rest/?method=flickr.photos.search&api_key=[mykey]&text=cheese&per_page=1&sort=relevance&min_upload_date=2010-05-25
Set http = Server.CreateObject("MSXML2.ServerXMLHTTP.6.0")
http.Open "GET", vurl, False
http.Send
Set dom = http.responseXML
Set items = dom.getElementsByTagName("photos")
If NOT (items IS Nothing) Then
For Each item In items
Set tags = item.getElementsByTagName("photo")
If NOT (tags IS Nothing) Then
var_id = tags(0).getAttribute("id")
var_owner = tags(0).getAttribute("owner")
var_server = tags(0).getAttribute("server")
var_farm = tags(0).getAttribute("farm")
var_title = tags(0).getAttribute("title")
var_public = tags(0).getAttribute("public")
var_secret = tags(0).getAttribute("secret")
var_img_url2 = "https://farm"&var_farm&".staticflickr.com/"&var_server&"/"&var_id&"_"&var_secret&"_b.jpg"
var_id = ""
%>
<%
End If
Next
end if
我的问题是,如果 API 没有为搜索词返回图像 - 例如"aplogranite" XML 响应是:
<rsp stat="ok">
<photos page="1" pages="0" perpage="1" total="0"/>
</rsp>
我上面的代码returns这个错误:
Microsoft VBScript runtime error '800a01a8'
Object required: '[object]'
我尝试通过以下方式诱捕它:
Set items = dom.getElementsByTagName("photos")
If NOT (items IS Nothing) Then...
但是还是报错
我想知道如何捕获错误以便处理 XML 不包含 "photo" 标记中的任何数据的情况?
似乎在没有元素匹配标签名称参数的情况下,getElementsByTagName()
return 不是 Nothing
,而是空集合。因此,请尝试检查 return 值的 Length
:
If tags.Length > 0 Then
....
End If
或者测试 Nothing
的第一个元素:
If Not (tags(0) Is Nothing) Then
....
End If