xml - 需要捕获对象 : '[object]' with MSXML2. ServerXMLHTTP.6.0

标签 xml asp-classic

我正在使用 Flickr API 和 MSXML2.ServerXMLHTTP.6.0 来读取 XML 响应。

例如:

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

返回:

<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>

我上面的代码返回此错误:

Microsoft VBScript runtime error '800a01a8'

Object required: '[object]' 

我尝试通过以下方式捕获它:

Set items = dom.getElementsByTagName("photos")

If NOT (items IS Nothing) Then...

但仍然出错。

我想知道如何捕获错误,以便我可以处理 XML 不包含“photo”标签内任何数据的情况?

最佳答案

在没有元素匹配标签名称参数的情况下,getElementsByTagName() 似乎返回空集合,而不是 Nothing。因此,请尝试检查返回值的Length:

If tags.Length > 0 Then
    ....
End If

或者也许测试第一个元素是否Nothing:

If Not (tags(0) Is Nothing) Then
    ....
End If

关于xml - 需要捕获对象 : '[object]' with MSXML2. ServerXMLHTTP.6.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30045001/

相关文章:

java - 如何在作为 xml 布局文件一部分的框架布局中创建 Canvas

jquery - 多个元素上的一个 jQuery 更改事件

javascript - 仅在 IE 中出现 InvalidCharacterError

asp-classic - 我使用经典的 ASP、IIS6 和 WinServer 2003 R2 得到空白页而不是错误消息

android - 为什么这个 anko 布局不能正确处理系统用户界面?

java - XML 规范化器问题

javascript - 如果票数 > 0,XML 仅显示 <Candidate></Candidate>

asp-classic - 在经典 asp adodb.recordset 中返回超过 1000 行

session - 经典 ASP : Multiple ASPSESSIONID in cookies

xml - 向根元素添加属性