我需要使用一些特定的标头调用客户端 API-HTTPS (GET)
Accept:application/json,application/vnd.error+json
Date:2018-10-03T06:52:48Z
Authorization:<SECRETKEY>
在这种情况下,当我尝试从Postman或Advanced REST 客户端等客户端调用它时,API 会给出正确的结果。但是我用 C# 代码尝试过同样的事情,它会生成 401-Unauthorized 错误代码。
例如,如果我使用的是 RestSharp (C#) 的邮递员代码。它不适用于我的代码。邮递员截图:
即使我也对HttpWebRequest和HttpClient进行了同样的尝试。但没有运气。
邮递员从代码部分提供的代码如下,其中包含一些我无法公开的机密信息。
var client = new RestClient("https://**CLIENT_API_PATH**");
var request = new RestRequest(Method.GET);
request.AddHeader("Postman-Token", "ef8c2a79-a501-4cef-aa2e-bacdc9d3a922");
request.AddHeader("Cache-Control", "no-cache");
request.AddHeader("Authorization", "**SECRET_KEY**");
request.AddHeader("Date", "2018-10-03T06:52:48Z");
request.AddHeader("Accept", "application/json,application/vnd.error+json");
IRestResponse response = client.Execute(request);
在上面的代码中,3 个参数是强制性的,必须传递才能成功调用 API。
仅限上述格式的日期。
仅接受上述字符串。
具有特定身份验证的授权(由客户自定义)。
根据建议的评论,我还添加了来自通话的提琴手数据。
- 邮递员请求从提琴手 fiddler screenshot中获取
- 来自提琴手fiddler screenshot的 C# api 调用代码请求
- C#代码调试结果 visual studio调试截图