几天来,我一直在搜索interwebs,寻找将API脚本翻译成VBA的解决方案,使其能够直接在Excel文件中运行。我已经成功地复制了python脚本中生成的签名密钥。但是,我仍然遇到无效凭证错误,因为我相信我以正确的方式构造了头和参数。你知道吗
页眉A、页眉B和页眉C是文档中概述的所需页眉的占位符。参数“job\u 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.setRequestHeader文件'行。我已经在单独的requestheader行中尝试过了,没有“authorization”标签和其他很多随机的东西。有人能指出我在这里的失败之处吗?你知道吗
非常感谢您的时间!你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐