将工作Python API脚本转换为VBA-

将工作Python API脚本转换为VBA-,python,excel,vba,api,winhttprequest,Python,Excel,Vba,Api,Winhttprequest,我已经在互联网上搜索了好几天,现在正在寻找将我的API脚本翻译成VBA的解决方案,以便它可以直接在Excel文件中运行。我已经成功地复制了python脚本中生成的签名密钥。但是,我仍然遇到无效凭证错误,因为我相信我正在以正确的方式构造标头和参数 标题A、标题B和标题C是文档中概述的标题所需的占位符。参数“job_id”也是必需的 工作python脚本: signature = generateSignature(sigtag,key) headers = {"HEADER_A": signatu

我已经在互联网上搜索了好几天,现在正在寻找将我的API脚本翻译成VBA的解决方案,以便它可以直接在Excel文件中运行。我已经成功地复制了python脚本中生成的签名密钥。但是,我仍然遇到无效凭证错误,因为我相信我正在以正确的方式构造标头和参数

标题A、标题B和标题C是文档中概述的标题所需的占位符。参数“job_id”也是必需的

工作python脚本:

signature = generateSignature(sigtag,key)
headers = {"HEADER_A": signature,
           "HEADER_B": timestamp,
           "HEADER_C": employee_id}
apirequest = requests.get(GEOPAL_BASE_URL + apicall,
                          headers=headers,
                          params={"job_id": job_id})
apifeedback = apirequest.json() 
我一直在拼凑解决这个问题的方法,但是我找不到一个例子,其中有人必须同时使用参数和头,就像我在上面的请求库中使用的那样

以下是我目前在VBA方面的进展:

Private Sub cmdgetjobinfo()
    Dim URL As String, timestamp As String, empID As String, key As String, method As String, signature As String, hash As String, params As String
    Dim objHTTP As Object: Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
    Dim ws As Worksheet: Set ws = Worksheets("API")        
    URL = "https://app.addressofwebsite.com/"
    uri = "api/jobs/get"
    timestamp = Format(Now(), "ddd, DD MMM YYYY HH:MM:SS") & " +0000"
    empID = "715"
    method = "get"
    key = "abckey"

    hash = ComputeHMACSHA256(key, method & uri & empID & timestamp)
    signature = EncodeBase64(hash)
    params = ("job_id=testid")

    objHTTP.Open "GET", URL & uri, False
    objHTTP.setRequestHeader "Content-Type", "application/json", "Accept", "application/json"
    objHTTP.setRequestHeader "Authorization", "HEADER_A", signature,"HEADER_B", timestamp,"HEADER_C", empID
    objHTTP.send params
    strResult = objHTTP.responseText
    Worksheets("API").Range("A10:A10") = strResult
End Sub
脚本的当前输出:

{"status":false,"tag":"api\/jobs","error_code":0,"error_message":"Invalid Credentials"}
我知道问题存在于“objHTTP.send”和“objHTTP.setRequestHeader”行中。我在单独的requestheader行上尝试了它们,没有“authorization”标签和许多其他随机的东西。有人能指出我在这里失败的地方吗


非常感谢您抽出时间

我猜这不是一个可以共享URL的公共API?嘿,QHarr-不幸的是,不是:/I可以尝试回答任何进一步的问题,你可能需要尝试获得更多的信息,如果这有帮助的话?