2011-12-29 91 views
0

我需要從服務器url中獲取請求。這是XML格式還是不是。在經典ASP中,從XML獲取服務器請求(API)Formate

Set objServer = Server.CreateObject("MSXML2.ServerXMLHTTP.3.0") 
    Set objXML  = Server.CreateObject("Msxml2.DOMDocument.3.0") 

objerver.setTimeouts 30000, 30000, 30000, 30000 
    objServer.Open "GET", "https://api.myurl/", False   
    objServer.setRequestHeader "Content-Type", "application/xml; charset=utf-8" 
    objServer.setRequestHeader "Accept", "application/xml" 

ObjServer.Send 

strXMLResponse = objServer.responseText 
    blnXMLLoaded = objXML.loadXML(objServer.responseText) 

If Not blnXMLLoaded Then 
    aryReturn(0) = "XML failed to Load" 
Else 
    aryReturn(0) = "succssResult" 
End If 

當我嘗試運行這個實驗(帶有錯誤/錯誤的URL)時,我得到的是一個運行時錯誤。因爲XMLLoaded爲TRUE,但我希望它將其設置爲FALSE。它正在接收一個HTML文檔,但這裏的HTML也有一些XML標籤。所以,雖然它是XML和XMLLoaded標誌設置爲true,所以錯誤永遠不會被拋出

任何人都可以幫助我請。 謝謝, Jagadi

回答

1

你的問題是,你已經忽略了http請求的響應狀態。你至少應該確保測試status屬性是200使用responseText前:

blnXMLLoaded = false 
If objServer.status = 200 Then 
    blnXMLLoaded = objXML.loadXML(objServer.responseText) 
End If 

整個序列我真的代碼:

Function GetXML(url) 
    Dim xhr: Set xhr = Server.CreateObject("MSXML2.ServerXMLHTTP.3.0") 
    xhr.setTimeouts 30000, 30000, 30000, 30000 
    xhr.Open "GET", url, False 
    If xhr.status = 200 Then 
     Set GetXML = xhr.responseXML 
    Else 
     Set GetXML = Nothing 
    End If 
End Function 

Dim objXML : Set objXML = GetXML("https://api.myurl/") 
If Not objXML Is Nothing Then 
    ''# All is good stuff here 
Else 
    ''# Oops something bad happend stuff here 
End If