Передача ключа и параметров API с использованием VBA в запросе POST - PullRequest
1 голос
/ 28 апреля 2020

Я пытался обернуть голову вокруг этой операции VBA-Web c http://vba-tools.github.io/VBA-Web/docs/, чтобы передать auth_key и другие параметры в запросе post. Я понимаю концепцию кодирования auth_key, как объяснено здесь Как передать ключ API в VBA для получения и отправки запроса? . Но мне нужна помощь, чтобы включить все параметры ниже в VBA.

ОБНОВЛЕНИЕ: я смог заставить работать код QHarr ниже. Но мне все еще трудно использовать свои собственные параметры скручивания ниже. Я пытался использовать EncodeBase64 (apikey), но я еще не там.

Public Sub GetResults()
    Dim data As String, json As Object '<  VBE > Tools > References > Microsoft Scripting Runtime
    data = "{""domainNames"":[""google.com""]}"
    With CreateObject("WinHttp.WinHttpRequest.5.1")
        .Open "POST", "https://api.dev.name.com/v4/domains:checkAvailability", False
        .setRequestHeader "User-Agent", "Mozilla/5.0"
        .setRequestHeader "Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"
        .setRequestHeader "Authorization", "Basic " + _
            EncodeBase64("username" + ":" + "Token")
        .send data
        Set json = JsonConverter.ParseJson(.responseText)
        Dim result As Object
        For Each result In json("results")
            Debug.Print result("domainName")
        Next
    End With
End Sub



Function EncodeBase64(text As String) As String


  Dim arrData() As Byte
  arrData = StrConv(text, vbFromUnicode)

  Dim objXML As MSXML2.DOMDocument60
  Dim objNode As MSXML2.IXMLDOMElement

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

  objNode.DataType = "bin.base64"
  objNode.nodeTypedValue = arrData
  EncodeBase64 = Application.Clean(objNode.text)

  Set objNode = Nothing
  Set objXML = Nothing
End Function

Вот API do c - https://cloud.ibm.com/apidocs/

Запрос функции:

curl -X POST \
-H "Content-Type: application/json" \
-u "apikey:{apikey}" \
-d @parameters.json \
"{url}/v1/analyze?version=2019-07-12"

Пример параметра:

{
  "features": {
    "semantic_roles": {}
  },
  "text": "IBM has one of the largest workforces in the world"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...