Как передать API ключ в VBA для получения и отправки запроса? - PullRequest
0 голосов
/ 05 мая 2018

Я использую https://developer.companieshouse.gov.uk/api/docs/ для доступа к API У меня есть мой ключ API, однако я не уверен, как передать его из VBA. Пока я попробовал ниже

AuthKey = [Key received]

With CreateObject("Microsoft.XMLHTTP")
        .Open "GET", strUrl, False, authKey
        .SetRequestHeader "Content-Type", "application/json"
        .SetRequestHeader "Accept", "application/json"
        .SetRequestHeader "Authorization", "Basic " & AuthKey
        .Send
        response = .ResponseText
    End With

Когда я пробую их тестовую страницу https://developer.companieshouse.gov.uk/document/docs/document/id/content/fetchDocument.html, это работает хорошо, и когда я иду в инструменты разработчика, ключ авторизации отличается, я думаю, что мне не хватает некоторой кодировки. Может кто-нибудь, пожалуйста, помогите

Спасибо

Ответы [ 2 ]

0 голосов
/ 05 мая 2018

Обычная аутентификация требует, чтобы имя пользователя и пароль были закодированы вместе как base 64 AuthKey, который вы должны передать, по существу:

def unencoded_auth = "[username]:[authkey]"
def encoded_auth = *call-to-base64-encode-value*(unencoded_auth)

Тогда вы бы заменили

"Basic " & AuthKey

с

"Basic " & encoded_auth

Я расскажу в этом посте о том, как добиться кодировки base64.

0 голосов
/ 05 мая 2018

Я нашел это .. мне не хватало, чтобы закодировать ключ

Function EncodeBase64(text As String) As String
  Dim arrData() As Byte
  arrData = StrConv(text, vbFromUnicode)

  Dim objXML As MSXML2.DOMDocument
  Dim objNode As MSXML2.IXMLDOMElement

  Set objXML = New MSXML2.DOMDocument
  Set objNode = objXML.createElement("b64")

  objNode.DataType = "bin.base64"
  objNode.nodeTypedValue = arrData
  EncodeBase64 = objNode.text

  Set objNode = Nothing
  Set objXML = Nothing
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...