13

我有以下代码:

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

如果我删除&request_token=#####some_default_request_token######它就可以了。

我也试过这个:我再次添加了request_token,我只是在其中输入了一个随机字符,例如,rexfuest_token,奇怪的是它起作用了。msxml3.dll 中似乎有错误的解析。带有 request_token 字。

想法?

4

4 回答 4

23

此问题可能与 Windows 中的安全问题有关。修复它的最佳方法是将Microsoft.XmlHttp/MSXML2.XMLHTTP替换为MSXML2.ServerXMLHTTP.

我看到这个话题已经有将近 2 年的历史了,很可能这个话题的发起者已经解决了问题。几个小时前我遇到了同样的问题,谷歌为我提供了几个链接。其中有一些:

  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-在-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
于 2014-10-25T17:19:15.633 回答
16

尝试使用更新的版本:

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

这也可能是您的 Internet 安全设置的问题(请参阅此处)。在控制面板中打开Internet 选项小程序,在安全选项卡中选择网站的区域(可能是“受信任的站点”),然后单击自定义级别...。

Internet 选项安全选项卡

杂项部分中,将跨域访问数据源设置为已启用

安全设置 - 其他

于 2013-07-01T11:02:33.177 回答
2

也可以将 URL 从 http 更改为 https。我有帮助

于 2019-11-29T17:49:55.723 回答
0

对我来说,解决方案是在受信任的站点中添加 URL。

Internet explorer 浏览器 > 工具 > Internet 选项 > 安全 > 受信任的站点 > 站点 > 在“将此网站添加到区域:”下添加 URL,然后单击添加并保存。

在此处输入图像描述

于 2018-03-15T08:19:00.413 回答