我正在使用一个API,它希望我将标记与Header一起发送,特别是Content Header。
这是我的代码块。
string path_current_user = "me";
var cookie = HttpContext.Request.Cookies.Get("cookietoken");
string cookie_with_token = "ACCESS_TOKEN="+cookie.Value+";";
client.DefaultRequestHeaders.Add("Cookie", cookie_with_token);
client.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/json; charset=utf-8");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("*/*"));
HttpResponseMessage response = await client.GetAsync(path_current_user);
我总是得到410个未经授权的回复。但是,在调试期间,我可以从客户端对象中收集值,并将它们复制粘贴到https://www.hurl.it,然后我得到预期的200 OK响应。所以,我知道上面代码中存储的值是正确的。它肯定不是证书问题。
我已经查看了堆栈溢出的近50个不同线程,但没有一个讨论此规范情况。使用标头内容集进行GET。这是HURL的截图,效果很好。
更新1 - 这是我想要实现的API文档。
端点
告诉我
请求路线
告诉我
接头
Content-Type:application / json Cookie:ACCESS_TOKEN ="令牌字符 来这里删除引号&#34 ;;主持人:x.x
更新2 - 我的一位导师,推荐以下内容。
using (var httpClient = new HttpClient())
{
var request = new HttpRequestMessage(HttpMethod.Get, "https://small-project-api.herokuapp.com/me");
request.Headers.Add.("Content-Type", "application/json");
request.Headers.Add.("Cookie", cookie_with_token);
var response2 = await httpClient.SendAsync(request);
var responsestring = await response2.Content.ReadAsStringAsync();
}
他认为可能是这样一个请求,如下所述,只是在dot net中工作。我几乎准备放弃这里。