我使用的是C# Amazon库,我使用swagger转换了C#包装器类,所有这些都可以很好地处理定价,以及Reports中的一些功能。
但是当我试图调用getReportDocument时,它会给出与AWS签名不匹配的错误。
发布于 2022-02-23 11:50:05
如果您能够确认此问题仅在按id调用单个项(如GetOrder、GetReport )时发生,并且您正在使用亚马逊提供的Amazon.SellingPartnerAPIAA.csproj进行签名,则很可能是AWSSigV4Signer.CreateCanonicalRequest
方法使用段占位符而不是id本身对url进行签名。
例如,"/reports/2021-06-30/documents/{reportDocumentId}“而不是"/reports/2021-06-30/documents/0356cf79-b8b0-4226-b4b9-0ee058ea5760”,一个可能的解决方案是在调用ExtractCanonicalURIParameters
之前先“手动”解析url
foreach(var par in restRequest.Parameters)
{
if(restRequest.Resource.Contains($"{{{par.Name}}}"))
{
restRequest.Resource = restRequest.Resource.Replace($"{{{par.Name}}}", par.Value.ToString());
}
}
//CanonicalURI
canonicalizedRequest.AppendFormat("{0}\n", AwsSignerHelper.ExtractCanonicalURIParameters(restRequest.Resource));
https://stackoverflow.com/questions/68369374
复制相似问题