我正在使用Classic ASP并尝试使用JustGiving API。
我想用它在我的网站上显示我捐赠页面上筹集的总金额和捐款总额。
我可以通过以下方式查看该信息: https://api.justgiving.com/docs/resources/v1/Account/Retrieve
<%
vurl = "http://api.justgiving.com/---myIDhere---/v1/account"
Set http = Server.CreateObject("msxml2.ServerXMLHTTP")
http.Open "GET", vurl, False
http.Send
Set dom = Server.CreateObject("msxml2.DOMDocument")
dom.loadXML http.responseText
Set items = dom.getElementsByTagName("account")
For Each item In items
Set var_totalDonated = item.getElementsByTagName("totalDonated")
If NOT (var_totalDonated IS Nothing) Then
var_totalDonated = ap(totalDonated(0).Text)
response.write var_totalDonated
End If
Next
%>
然而,当我访问它时,页面会超时。
我认为这是因为我需要提供一些身份验证信息,如下所示: https://api.justgiving.com/docs/usage#protectedResources
所以我收到了身份验证信息。
但我不知道如何“发送”它到API,以便它可以作为用户验证我并提供信息。
它还提到通过上面的链接提供标题信息(我不能发布链接,因为我没有足够的声誉),但是用#contentTypes替换URL末尾的#protectedResources。 / p>
对不起 - 我也错过了那边的东西吗?
如果我问的是愚蠢的问题,我很抱歉,但API文档的信息假定用户方面有一定程度的智能,而且我没有太多的情报!
任何建议都非常感谢。
由于
感谢John的回复。
基于此,我将代码更改为:
<%
vurl = "https://api.justgiving.com/API_KEY/v1/account"
Set http = Server.CreateObject("msxml2.ServerXMLHTTP")
http.Open "GET", vurl, False, "username", "pwd"
http.setTimeouts 5000, 5000, 10000, 10000 ''ms - resolve, connect, send, receive
http.setRequestHeader "Authorization", "Basic MY_AUTH_STRING"
http.Send
Set dom = Server.CreateObject("msxml2.DOMDocument")
dom.loadXML http.responseText
Set items = dom.getElementsByTagName("account")
For Each item In items
Set var_totalDonated = item.getElementsByTagName("totalDonated")
If NOT (var_totalDonated IS Nothing) Then
var_totalDonated = (var_totalDonated(0).Text)
response.write var_totalDonated
End If
Next
%>
但不幸的是,该页面仍然超时。
我也通过以下方式检查: groups.google.com/forum /#!话题/ justgiving-API / Xhz5Fkxuy1s
但到目前为止还没有答案。
再次感谢
<%
Sub debug( varName )
Dim varValue
varValue = Eval( varName )
response.write "<p style='margin:10px; border-bottom:2px solid #ccc;border-top:1px solid #eaeaea;background-color:white;padding:10px;color:red;text-align:left;'><strong>" & varName & "</strong>: " & varvalue & "</p>" & vbcrlf & vbcrlf
End Sub
vurl = "https://api.justgiving.com/AP_KEY/v1/account"
Set http = Server.CreateObject("msxml2.ServerXMLHTTP")
http.Open "GET", vurl, False, username, password
http.setTimeouts 5000, 5000, 10000, 10000 'ms - resolve, connect, send, receive
http.setRequestHeader "Authorization", "Basic AUTH_STRING"
http.Send
Response.ContentType = "application/xml"
Set dom = Server.CreateObject("msxml2.DOMDocument")
dom.loadXML http.responseText
Set items = dom.getElementsByTagName("account")
For Each item In items
Set var_totalDonated = item.getElementsByTagName("totalDonated")
If NOT (var_totalDonated IS Nothing) Then
var_totalDonated = ap(var_totalDonated(0).Text)
debug "var_totalDonated"
End If
Set var_totalRaised = item.getElementsByTagName("totalRaised")
If NOT (var_totalRaised IS Nothing) Then
var_totalRaised = ap(var_totalRaised(0).Text)
debug "var_totalRaised"
End If
Set var_totalGiftAid = item.getElementsByTagName("totalGiftAid")
If NOT (var_totalGiftAid IS Nothing) Then
var_totalGiftAid = ap(var_totalGiftAid(0).Text)
debug "var_totalGiftAid"
End If
Next
%>
以前我用过:
vurl = "https://api.justgiving.com/AP_KEY/v1/account"
但是当我把它改成https时,它起作用了。
我以为我之前尝试过,但显然不是。
再次感谢约翰,我真的很感谢你的帮助!
答案 0 :(得分:13)
尝试
http.Open "GET", vurl, False, "yourusername", "yourpassword"
我不知道这是否适用于宽容,但它适用于Bing API
此外,这个问题可能是相关的 XmlHttp Request Basic Authentication Issue
编辑 - 使用Response.ContentType和Msxml2.ServerXMLHTTP.6.0
vurl = "https://api.justgiving.com/API_KEY/v1/account"
Set http = Server.CreateObject("msxml2.ServerXMLHTTP.6.0")
http.Open "GET", vurl, False, "username", "pwd"
http.setTimeouts 5000, 5000, 10000, 10000 'ms - resolve, connect, send, receive'
http.setRequestHeader "Authorization", "Basic MY_AUTH_STRING"
http.Send
Response.ContentType = "application/xml"
Set items = http.responseXML.getElementsByTagName("account")
等
答案 1 :(得分:1)
为添加到旧帖子而道歉。但是,当Google搜索MailChimp API V3.0和VBA上的帮助时,这一直是出现的。
这是我使用的修复:
{{1}}
您需要编写Base64Encode函数的代码。我从http://pastie.org/1192157(Ex StackOverflow)中获取了一些代码并将其粘贴到VBA模块中。
希望它有所帮助。