api - w3schools - Proporcionar información de autenticación a través de msxml2.ServerXMLHTTP
w3schools com asp net (2)
Estoy usando ASP clásico e intento usar la API de JustGiving.
Me gustaría usarlo para mostrar el monto total recaudado y el total de donaciones recibidas en mi página de donaciones en mi sitio web.
Puedo ver que la información está disponible en: 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
%>
Sin embargo, la página se agota cuando tengo acceso a ella.
Creo que es porque necesito proporcionar información de autenticación como se detalla aquí: https://api.justgiving.com/docs/usage#protectedResources
Así que obtuve esa información de autenticación.
Pero no tengo idea de cómo "enviarlo" a la API, para que pueda autenticarme como usuario y proporcionar la información.
También menciona proporcionar información en el encabezado a través del enlace que está arriba (no puedo publicar el enlace porque no tengo suficiente reputación), pero reemplazo #protectedResources al final de la URL con #contentTypes.
Lo siento. ¿Me falta algo de ese lado?
Lo siento si estoy haciendo preguntas tontas, pero la información en los documentos API asume cierto nivel de inteligencia por parte del usuario, ¡y no tengo mucho de eso!
Cualquier consejo muy apreciado.
Gracias
Gracias a John por su respuesta.
Basado en eso, cambié el código a:
<%
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
%>
Pero desafortunadamente la página todavía se agota.
Estoy revisando también a través de: groups.google.com/forum/#!topic/justgiving-api/Xhz5Fkxuy1s
Pero no hay respuesta hasta el momento.
Gracias de nuevo
Versión arreglada
<%
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
%>
Anteriormente estaba usando:
vurl = "https://api.justgiving.com/AP_KEY/v1/account"
Pero cuando lo cambié a https, funcionó.
Pensé que lo había intentado anteriormente, pero obviamente no.
Gracias de nuevo a John, ¡realmente aprecio tu ayuda!
Disculpas por agregar a una publicación anterior. Sin embargo, esto siempre ha surgido al buscar en Google ayuda con MailChimp API V3.0 y VBA.
Esta es la solución que utilicé:
ret = objhttp.Open("POST", sURL, False)
objhttp.setRequestHeader "Content-Type", "application/json"
objhttp.setRequestHeader "Accept", "application/json"
''V3 API uses HTTP Basic Authorisation inside an https: wrapper.
''The standard windows method does not seem to work however the
''following hack does.
''In summary the user name and APIkey are seperated with a Colon: and
''base 64 encoded and added to a Http RequestHeader
objhttp.setRequestHeader "Authorization", "Basic " & Base64Encode(APIUser & ":" & ApiKey)
objhttp.send (sJson)
Deberá codificar la función Base64Encode. Agarré un código de http://pastie.org/1192157 (Ex ) y lo pegué en un Módulo de VBA.
Espero eso ayude.
Tratar
http.Open "GET", vurl, False, "yourusername", "yourpassword"
No sé si esto funciona con justicia, pero lo hace con la API de Bing
Además, esta pregunta puede ser relevante XmlHttp Request Basic Authentication Issue
Editar - utilizando Response.ContentType y 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")
etc