我尝试通过VBA访问SM。我暂时忽略了JSON,因为我已经有麻烦了。下面给我的结果是“开发人员不活跃”,尽管我在VB.NET中有另一个项目(使用.NET DLL),其中相同的键和令牌工作正常,我可以检索调查列表。我做错了什么?
Public Sub GetSMList()
Dim apiKey As String
Dim Token As String
Dim sm As Object
apiKey = "myKey"
Token = "myToken"
Set sm = CreateObject("MSXML2.XMLHTTP.6.0")
With sm
.Open "POST", "https://api.surveymonkey.net/v2/surveys/get_survey_list", False
.setRequestHeader "Authorization", "Bearer " & Token
.setRequestHeader "Content-Type", "application/json"
.send "api_key=" & apiKey
result = .responseText
End With
End Sub发布于 2015-04-23 17:03:07
您要将API密钥作为POST请求的请求主体的一部分发送。将查询参数直接添加到URL中,这样就可以了。
"https://api.surveymonkey.net/v2/surveys/get_survey_list?api_key=" & apiKey然后,您需要使用" send“来发送JSON编码的请求对象。对于get_survey_list,一个空对象("{}")将启动。
发布于 2015-04-22 11:53:15
此代码的目的是显示错误处理。这是vbscript,但vbscript可以传递到VBA中。这个错误可能会告诉你原因。
总是在文件(用户删除它们)、网络或互联网(它们不能保证工作)和注册表读取(用户删除它们)上做错误。
URL必须100%正确。与浏览器不同,不存在修复urls的代码。
我的程序的目的是获得错误的细节。
如何获得正确的URL是在浏览器中键入url,导航,而正确的URL通常在地址栏中。另一种方法是使用链接的属性等来获取URL。
Microsoft.XMLHTTP也映射到Microsoft.XMLHTTP.1.0。HKEY_CLASSES_ROOT\Msxml2.XMLHTTP映射到Msxml2.XMLHTTP.3.0。再试一次
使用xmlhttp试试这种方式。编辑网址等。如果它似乎工作,注释出如果/结束,如果要转储信息,即使似乎是有效的。它是vbscript,但vbscript在vb6中工作。
On Error Resume Next
Set File = WScript.CreateObject("Microsoft.XMLHTTP")
File.Open "GET", "http://www.microsoft.com/en-au/default.aspx", False
'This is IE 8 headers
File.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618; .NET4.0C; .NET4.0E; BCD2000; BCD2000)"
File.Send
If err.number <> 0 then
line =""
Line = Line & vbcrlf & ""
Line = Line & vbcrlf & "Error getting file"
Line = Line & vbcrlf & "=================="
Line = Line & vbcrlf & ""
Line = Line & vbcrlf & "Error " & err.number & "(0x" & hex(err.number) & ") " & err.description
Line = Line & vbcrlf & "Source " & err.source
Line = Line & vbcrlf & ""
Line = Line & vbcrlf & "HTTP Error " & File.Status & " " & File.StatusText
Line = Line & vbcrlf & File.getAllResponseHeaders
wscript.echo Line
Err.clear
wscript.quit
End If
On Error Goto 0
Set BS = CreateObject("ADODB.Stream")
BS.type = 1
BS.open
BS.Write File.ResponseBody
BS.SaveToFile "c:\users\test.txt", 2还可以查看这些其他对象是否工作。
C:\Users>reg query hkcr /f xmlhttp
HKEY_CLASSES_ROOT\Microsoft.XMLHTTP
HKEY_CLASSES_ROOT\Microsoft.XMLHTTP.1.0
HKEY_CLASSES_ROOT\Msxml2.ServerXMLHTTP
HKEY_CLASSES_ROOT\Msxml2.ServerXMLHTTP.3.0
HKEY_CLASSES_ROOT\Msxml2.ServerXMLHTTP.4.0
HKEY_CLASSES_ROOT\Msxml2.ServerXMLHTTP.5.0
HKEY_CLASSES_ROOT\Msxml2.ServerXMLHTTP.6.0
HKEY_CLASSES_ROOT\Msxml2.XMLHTTP
HKEY_CLASSES_ROOT\Msxml2.XMLHTTP.3.0
HKEY_CLASSES_ROOT\Msxml2.XMLHTTP.4.0
HKEY_CLASSES_ROOT\Msxml2.XMLHTTP.5.0
HKEY_CLASSES_ROOT\Msxml2.XMLHTTP.6.0
End of search: 12 match(es) found.还要注意,在发生锁定之前,可以调用任何特定的XMLHTTP对象的次数是有限制的。如果发生这种情况,并且在调试代码时会发生这种情况,只需更改为另一个xmlhttp对象即可。
https://stackoverflow.com/questions/29794868
复制相似问题