2013-07-01 95 views
6

我有以下代碼:MSXML3.DLL拒絕訪問

Function filejson(json) 
    Dim objStream, strData 
    Set objStream = CreateObject("ADODB.Stream") 
    objStream.CharSet = "utf-8" 
    objStream.Open 
    objStream.LoadFromFile(json) 
    strData = objStream.ReadText() 
    filejson = strData 
End Function 
Function http2json(url) 
    Set http = CreateObject("Microsoft.XmlHttp") 
    http.open "GET", url, FALSE 
    http.send ""         '<------- Line 13 
    http2json=http.responseText 
End Function 
Function str2json(json,value) 
    Set scriptControl = CreateObject("MSScriptControl.ScriptControl") 
    scriptControl.Language = "JScript" 
    scriptControl.AddCode("x="& json & ";") 
    str2json= scriptControl.Eval("x"& value) 
End Function 
Function get_json_from_file(json,value) 
    get_json_from_file=str2json(filejson(json),value) 
End Function 
Function get_json_from_http(url,value) 
    get_json_from_http=str2json(http2json(url),value) 
End Function 
Function save_json_from_http(url,loc) 
    Set fso = CreateObject("Scripting.FileSystemObject") 
    fullpath = fso.GetAbsolutePathName(loc) 
    Dim objStream, strData 
    Set objStream = CreateObject("ADODB.Stream") 
    objStream.CharSet = "utf-8" 
    objStream.Open 
    objStream.WriteText http2json(url) 
    objStream.SaveToFile fullpath, 2 
    save_json_from_http=fullpath 
End Function 
Wscript.Echo save_json_from_http("http://api.themoviedb.org/3/authentication/session/new?api_key=#####some_api_key_example#####&request_token=#####some_default_request_token######&_ctime_json_=1372670635.164760555","tmdb\temp\_tmdb_sock_w.164519518.2109") 

當我運行這段代碼,我碰到下面的錯誤。

VBs msxml3.dll Error

如果我刪除&request_token=#####some_default_request_token######它工作得很好。

我也試過這樣:我再補充request_token,我剛纔輸入的隨機字符在裏面,例如,rexfuest_token,奇怪它的工作。似乎msxml3.dll中有一個錯誤的解析。與request_token字。

想法?

回答

9

嘗試用一個較新的版本:

Set http = CreateObject("Msxml2.XMLHttp.6.0") 

它也可能是您的Internet安全設置(見here)的問題。在控制面板中打開Internet選項小程序,在安全選項卡中選擇網站的區域(可能是「可信站點」),然後單擊自定義級別&hellip;

Internet Options Security tab

在部分設置跨域到啓用訪問數據資源。

Security Settings - Miscellaneous

+0

同樣的故事訪問被拒絕msxml6.dll – Devian

+1

Internet選項>安全選項卡>自定義級別奏效了我。 –

+0

和我一樣:訪問被拒絕msxml6.dll,直到我改變自定義級別設置,然後它工作。 – Youkko

13

這個問題可能與Windows中的安全問題。解決此問題的最佳方法是用MSXML2.ServerXMLHTTP替換Microsoft.XmlHttp/MSXML2.XMLHTTP

我看到的話題已經快2歲了,最有可能的話題首發者已經解決了問題。幾小時前我遇到過同樣的問題,並且Google爲我提供了幾個鏈接。還有一些人:

  1. https://social.msdn.microsoft.com/Forums/en-US/1abda1ce-e23c-4d0e-bccd-a323aa7f2ea5/access-is-denied-while-using-microsoftxmlhttp-to-get-a-url-link-in-vbscript-help?forum=xmlandnetfx
  2. https://support.webafrica.co.za/index.php?/Knowledgebase/Article/View/615/41/msxml3dll-error-80070005-access-is-denied---loading-xml-file
  3. http://www.experts-exchange.com/Programming/Languages/Scripting/ASP/Q_27305017.html
+0

非常感謝這個答案。我試圖使用Microsoft.XmlHttp/MSXML2.XMLHTTP從VFP使用REST服務。 POST和DELETE工作正常,但PUT不會;使用MSXML2.ServerXMLHTTP是解決方案,它現在就像一個魅力。 – jpangamarca