401未经授权的API响应,在邮递员身上工作
因此,我正在打一个通话,这使我有一个链接,以稍后再进行另一个接听电话。他们俩在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 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论