Я использую классический ASP и пытаюсь использовать API JustGiving.Предоставление информации аутентификации через msxml2.ServerXMLHTTP
Я бы хотел использовать его, чтобы отобразить общее количество собранных сумм и полные пожертвования, полученные на моей странице пожертвования, на моем веб-сайте.
я могу видеть, что информация доступна через: 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, чтобы он мог аутентифицировать меня как пользователя и предоставить информацию.
Он также упоминает информацию о заголовке по ссылке выше этой (я не могу опубликовать ссылку, поскольку у меня недостаточно репутации), но замените #protectedResources в конце URL с помощью #contentTypes.
Извините, я тоже что-то пропустил с этой стороны?
Прошу прощения, если я задаю глупые вопросы, но информация о API-документах предполагает некоторый уровень интеллекта со стороны пользователя, и у меня его не так много!
Любой совет, который очень ценится.
Благодарности
Благодаря Джону за ответ.
Исходя из этого, я изменил код:
<%
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/#!topic/justgiving-api/Xhz5Fkxuy1s
Но нет ответа до сих пор.
Еще раз спасибо
Fixed Version
<%
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 он работал.
Мне показалось, что я пробовал это раньше, но, очевидно, нет.
Еще раз спасибо Джону, я очень ценю вашу помощь!
Спасибо, Джон, за вашу помощь. Я обновил страницу снова на основе этого, но страница все еще не работает :-(Я опубликовал свой пост выше, чтобы показать обновления. Надеюсь, он почти у вас - я спросил на странице API Google Groups и посмотрю, могут ли они помогите тоже. Еще раз спасибо –
Опять же, я не знаю, будет ли это иметь какое-то значение, но попробуйте «Msxml2.ServerXMLHTTP.6.0» и «Msxml2.DOMDocument.6.0» в ваших заявлениях Server.CreateObject, особенно если вы находитесь на IIS7 или 8 - это означает, что вы используете самую последнюю версию msxml. После того, как вы ее работаете, я рекомендую вам взглянуть на XSLT-преобразования на стороне сервера, которые классический ASP делает довольно красиво, вместо того, чтобы анализировать напрямую, но сначала получите ваш HTTP-запрос - один шаг за раз – John
Кроме того, попробуйте Response.ContentType, а не создайте новый объект XML, я отредактировал свой ответ, чтобы показать вам, что я имею в виду – John