首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VBA和SurveyMonkey API

VBA和SurveyMonkey API
EN

Stack Overflow用户
提问于 2015-04-22 10:35:31
回答 2查看 698关注 0票数 0

我尝试通过VBA访问SM。我暂时忽略了JSON,因为我已经有麻烦了。下面给我的结果是“开发人员不活跃”,尽管我在VB.NET中有另一个项目(使用.NET DLL),其中相同的键和令牌工作正常,我可以检索调查列表。我做错了什么?

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-23 17:03:07

您要将API密钥作为POST请求的请求主体的一部分发送。将查询参数直接添加到URL中,这样就可以了。

代码语言:javascript
复制
"https://api.surveymonkey.net/v2/surveys/get_survey_list?api_key=" & apiKey

然后,您需要使用" send“来发送JSON编码的请求对象。对于get_survey_list,一个空对象("{}")将启动。

票数 2
EN

Stack Overflow用户

发布于 2015-04-22 11:53:15

此代码的目的是显示错误处理。这是vbscript,但vbscript可以传递到VBA中。这个错误可能会告诉你原因。

总是在文件(用户删除它们)、网络或互联网(它们不能保证工作)和注册表读取(用户删除它们)上做错误。

URL必须100%正确。与浏览器不同,不存在修复urls的代码。

我的程序的目的是获得错误的细节。

如何获得正确的URL是在浏览器中键入url,导航,而正确的URL通常在地址栏中。另一种方法是使用链接的属性等来获取URL。

Microsoft.XMLHTTP也映射到Microsoft.XMLHTTP.1.0HKEY_CLASSES_ROOT\Msxml2.XMLHTTP映射到Msxml2.XMLHTTP.3.0。再试一次

使用xmlhttp试试这种方式。编辑网址等。如果它似乎工作,注释出如果/结束,如果要转储信息,即使似乎是有效的。它是vbscript,但vbscript在vb6中工作。

代码语言:javascript
复制
 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

还可以查看这些其他对象是否工作。

代码语言:javascript
复制
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对象即可。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29794868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档