gpt4 book ai didi

azure - 如何使用 Postman 将查询发送到 Azure 表 REST API

转载 作者:行者123 更新时间:2023-12-03 05:00:38 27 4
gpt4 key购买 nike

我正在尝试使用 Postman 向 Azure 表 REST API 发出 GET 请求。我可以使用我找到的 C# 程序发出工作请求,但是当我尝试将相同的信息复制到 Postman 请求中时,它会返回以下错误:

Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.

使用 C# 程序,我生成 UTC 时间和授权代码。该程序将给出以下输出:

x-ms-date: Fri, 01 Nov 2019 10:13:26 GMT

Authorization: SharedKeyLite username:e4IREMOVEDSOMELETTERST4Ag=

Request URI: https://username.table.core.windows.net/MainTable(PartitionKey='akey',RowKey='130')

生成的输出在 C# 程序中有效,因为当我使用时:

    result = await Client.GetAsync(requestUri);

结果将给出(akey, 130)的信息。当我将它们传递给 postman 时,它仍然会给我一个错误。每当我创建新的授权字符串时,我都会更新 postman 中的日期。

我的 postman 设置如下: postman

我最终想用 ESP32 发出这个请求,所以它可能有点无关,但 ESP 给了我同样的错误。任何有关为 Postman 或 ESP 设置正确 header 的提示都值得赞赏。

最佳答案

要使此工作正常进行,首先在您的环境中创建两个变量:

{{utcDate}}
{{authToken}}

然后创建一个新的 Get 请求并设置 header ,如下所示:

x-ms-version             2015-12-11

x-ms-date {{utcDate}}

Authorization SharedKey resourceName:{{authToken}}

DataServiceVersion 3.0;NetFx

MaxDataServiceVersion 3.0;NetFx

Accept application/json;odata=nometadata

最后,定义一个预请求脚本:

var now = new Date().toUTCString();
pm.environment.set("utcDate", now);
var hcar = "/resourceName/TableName";
var verb = request.method;
var cntMd5 = "";
var cntType = "";
var mKey="<Your service key goes here>";

var text = verb + "\n" + (cntMd5 || "") + "\n" + (cntType || "") + "\n" + now + "\n" + hcar;

var key = CryptoJS.enc.Base64.parse(mKey);
var signature = CryptoJS.HmacSHA256(text, key);
var base64Bits = CryptoJS.enc.Base64.stringify(signature);
pm.environment.set("authToken", base64Bits);

变量的原因是,authToken是因为您需要一个占位符来存储计算的 token ,utcDate是因为必须使用 header 中的相同日期来计算 token 。

关于azure - 如何使用 Postman 将查询发送到 Azure 表 REST API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58657838/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com