我需要使用一些特定的标题来调用客户端API-HTTPS(GET)
Accept:application/json,application/vnd.error+json
Date:2018-10-03T06:52:48Z
Authorization:<SECRETKEY>
在这种情况下,当我尝试从 Postman 或 Advanced REST client 之类的客户端调用它时,API会给出正确的结果。但是我尝试使用C#代码生成401-未经授权的错误代码的方法也是如此。
例如,如果我将邮递员代码用于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。
日期仅具有上述格式。
接受,且仅包含上述字符串。
授权(具有特定身份验证(由客户自定义))。
根据建议的评论,我还会从通话中添加提琴手数据。
答案 0 :(得分:0)
尝试一下。
public static string Get(Uri uri, string token)
{
string responseString = string.Empty;
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
request.Method = "GET";
request.ContentType = "application/json;charset=utf-8";
request.Headers.Add("Authorization", string.Format("Bearer {0}", token));
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (Stream responseStream = response.GetResponseStream())
{
StreamReader responseReader = new StreamReader(responseStream);
responseString = responseReader.ReadToEnd();
}
}
return responseString;
}