2013-07-01 81 views
6

Ich habe den folgenden Code:msxml3.dll Zugriff verweigert

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

Wenn ich diesen Code ausführen, bekomme ich die folgende Fehlermeldung.

VBs msxml3.dll Error

Wenn ich &request_token=#####some_default_request_token###### entfernen funktioniert es ganz gut.

Ich habe es auch versucht: Ich habe wieder die request_token, und ich tippte einfach ein zufälliges Zeichen in, zum Beispiel rexfuest_token, und seltsamerweise hat es funktioniert. Es scheint, dass es in msxml3.dll eine falsche Analyse gibt. mit request_token Wort.

Ideen?

Antwort

9

Versuchen mit einer neueren Version:

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

Es könnte auch ein Problem mit Ihren Internet-Sicherheitseinstellungen (siehe here) sein. Öffnen Sie das Internet-Optionen Applet in der Systemsteuerung, wählen Sie die Zone für die Website (wahrscheinlich "vertrauenswürdige Sites") in der Sicherheit Registerkarte und klicken Sie auf Custom Level & hellip;.

Internet Options Security tab

Im Abschnitt Sonstiges gesetzt Access-Datenquellen über Domänengrenzen hinweg zu Aktiviert.

Security Settings - Miscellaneous

+0

Die gleiche Geschichte der Zugriff verweigert msxml6.dll – Devian

+1

Internetoptionen> Registerkarte Sicherheit> Stufe anpassen hat den Trick für mich. –

+0

Gleiches gilt für mich: Zugriff auf msxml6.dll verweigert, bis ich die Einstellung für benutzerdefinierte Ebene geändert habe, dann hat es funktioniert. – Youkko

13

Dieses Problem auf die Sicherheitsprobleme in Windows in Verbindung stehen könnten. Der beste Weg, um es zu beheben, ist Microsoft.XmlHttp/MSXML2.XMLHTTP durch MSXML2.ServerXMLHTTP zu ersetzen.

Ich sehe das Thema ist fast 2 Jahre alt und höchstwahrscheinlich hat das Thema Starter gelöst Problem. Ich habe das gleiche Problem vor ein paar Stunden erlebt und Google hat mir mehrere Links zur Verfügung gestellt. Es gibt einige von ihnen:

  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

Vielen Dank für diese Antwort. Ich habe versucht, REST-Dienste von VFP mit Microsoft.XmlHttp/MSXML2.XMLHTTP zu konsumieren. POST und DELETE funktionierten OK, aber PUT nicht; mit MSXML2.ServerXMLHTTP war die Lösung, es funktioniert jetzt wie ein Charme. – jpangamarca