2015-05-05 39 views
2

我使用Flickr API和MSXML2.ServerXMLHTTP.6.0來讀取XML響應。捕獲對象需要:使用MSXML2.ServerXMLHTTP.6.0'[object]'

例如:

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="[email protected]" 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不包含「照片」標記內的任何數據的情況?

回答

2

在沒有元素匹配標籤名稱參數的情況下,似乎代替NothinggetElementsByTagName()返回空集合。因此,試圖檢查Length返回值,而不是:

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

也許測試Nothing第一個元素:

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

[文檔](https://msdn.microsoft.com/en- us/library/ms762212%28v = vs.85%29.aspx)support this:「即使沒有匹配,IXMLDOMNodeList對象也會返回,在這種情況下,列表的長度將設置爲零。」 –

相關問題