401未经授权的API响应,在邮递员身上工作

发布于 2025-02-09 20:59:47 字数 1502 浏览 0 评论 0原文

因此,我正在打一个通话,这使我有一个链接,以稍后再进行另一个接听电话。他们俩在Postman上都很好,但是当我尝试使用RestSharp时,我将在第二个电话中获得401的未经授权。我已经尝试使用HTTPClient和HttpWebrequest,但是我得到了相同的结果。

这是我的代码与RestSharp的样子,

string token = "tokenforbothcalls";
var request = new RestRequest("first/api", Method.Get);
var certfolder = @"C:\folderpath";
var cerFile = Path.Combine(certFolder, "cert.pfx");
var certificate = new X509Certificate2(certFile, "pw", X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);

var clientOptions = new RestClientOptions("https://baseurl.com");
clientOptions.ClientCertificates = new X509CertificateCollection();
clientOptions.ClientCertificates.Add(certificate);

var client = new RestClient(clientOptions);
client.AddDefaultHeader("Authorization", string.Format("Bearer {0}", token));
request.AddHeader("Prefer", "respond-async");

var response = await client.ExecuteAsync(request);

因此可以很好地工作,但是当我接到第二个通话时,我会得到401。

var headers = response.Headers.ToList();
//some more logic to get the link from the first call.

clientOptions = new RestClientOptions("https://baseurl.com");
clientOptions.ClientCertificates = new X509CertificateCollection();
clientOptions.ClientCertificates.Add(certificate);

client = new RestClient(clientOptions);
client.AddDefaultHeader("Authorization", string.Format("Bearer {0}", token));

request = new RestRequest("new/api", Method.Get);

response = await client.ExecuteAsync(request);

So I'm doing a Get call that gives me a link to make another get call later on. They both work perfectly fine on Postman, but when I try to use RestSharp, I am getting a 401 unauthorized on the second call. I've tried using HTTPClient and HTTPWebRequest but I am getting the same results.

Here's what my code looks like with RestSharp

string token = "tokenforbothcalls";
var request = new RestRequest("first/api", Method.Get);
var certfolder = @"C:\folderpath";
var cerFile = Path.Combine(certFolder, "cert.pfx");
var certificate = new X509Certificate2(certFile, "pw", X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);

var clientOptions = new RestClientOptions("https://baseurl.com");
clientOptions.ClientCertificates = new X509CertificateCollection();
clientOptions.ClientCertificates.Add(certificate);

var client = new RestClient(clientOptions);
client.AddDefaultHeader("Authorization", string.Format("Bearer {0}", token));
request.AddHeader("Prefer", "respond-async");

var response = await client.ExecuteAsync(request);

So that works perfectly fine, but when I get to the second call, I keep getting a 401.

var headers = response.Headers.ToList();
//some more logic to get the link from the first call.

clientOptions = new RestClientOptions("https://baseurl.com");
clientOptions.ClientCertificates = new X509CertificateCollection();
clientOptions.ClientCertificates.Add(certificate);

client = new RestClient(clientOptions);
client.AddDefaultHeader("Authorization", string.Format("Bearer {0}", token));

request = new RestRequest("new/api", Method.Get);

response = await client.ExecuteAsync(request);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文