如何解决在 C# 中向 REST API 调用 (OAuth 1.0) 添加参数会导致 Signature_Invalid (401) 错误
我正在尝试从 BrickLink API 获取未完成的订单。我可以连接并授权我的连接,然后返回大量订单。但是,当我尝试向调用添加任何参数时,它会返回 Signature_invalid 错误。
private static string GetorderList() {
// Build the URL.
var url = urltocall + "/" + actionrequest;
var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
httpWebRequest.Method = "GET";
CreateNonce(); // Prepare the nonce.
// Build the URL and add the oAuth to it.
var signatureBaseString = Escape(httpWebRequest.Method.toupper()) + "&";
signatureBaseString += EscapeUriDataStringRfc3986(url.ToLower()) + "&";
signatureBaseString += EscapeUriDataStringRfc3986(CreateoAuth());
/// CreateoAuth generates the oAuth to connect to Bricklink
CreateSignatureString(signatureBaseString);
var header = CreateHeaderString(); // Sets up the SHTTP header.
// Prepare the URL call and get the results from it.
httpWebRequest.Headers.Add(HttpRequestHeader.Authorization,header);
var response = httpWebRequest.GetResponse();
var characterSet = ((HttpWebResponse)response).CharacterSet;
var responseEncoding = characterSet == ""
? Encoding.UTF8
: Encoding.GetEncoding(characterSet ?? "utf-8");
var responsestream = response.GetResponseStream();
if (responsestream == null)
{
throw new ArgumentNullException(nameof(characterSet));
}
using (responsestream)
{
var reader = new StreamReader(responsestream,responseEncoding);
var result = reader.ReadToEnd();
Console.WriteLine(@"result: " + result);
return result;
}
}
如果运行上面的代码(显然类中有一些私有方法来准备oAuth和URL等),我们得到了大量的订单返回,这很好。
根据 API 文档 (http://apidev.bricklink.com/redmine/projects/bricklink-api/wiki/OrderMethod#Get-Orders),我们可以向 URL 添加参数以限制返回的记录。我在 url 定义后添加以下行以添加参数。
// url =+ "?status=PENDING";
当我这样做时,我得到以下响应:
result: {"Meta":{"description":"SIGNATURE_INVALID: Invalid Signature","message":"BAD_OAUTH_REQUEST","code":401}}
如何将参数传递给 API 以使其不会破坏 oAuth?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。