如何解决使用 Cookie 调用 RESTSharp GET
使用 RESTSharp,我可以登录:
RestClient client = new RestClient(Constants.APIURL + "method/login");
CookieContainer cookieJar = new CookieContainer();
RestRequest request = new RestRequest(Method.POST);
client.CookieContainer = cookieJar;
request.AddHeader("Content-Type","application/json");
request.AddHeader("Accept","application/json");
request.AddJsonBody(new
{
usr = username,pwd = password
});
var response = client.Execute(request);
var cookie = HttpContext.Current.Server.UrlDecode(response.Headers.ToList().Find(x => x.Name == "Set-Cookie").Value.ToString());
然后我将存储 cookie 并发送到另一个 API 调用,同样通过 RESTSharp。
RestClient client = new RestClient(Constants.APIURL);
RestRequest request = new RestRequest("resource/Asset",Method.GET);
request.AddCookie("Cookie",HttpContext.Current.Server.UrlEncode(cookie));
但它一直返回 403 forbidden。我试过 POSTMan,效果很好。
有什么帮助吗?是我错误地发送了cookie吗?我尝试在 HttpWebRequest
中发送 cookie,它工作得非常好。
解决方法
我还尝试复制粘贴 Postman 生成的代码,其中 cookie 是在标头中传递的,但没有奏效。我尝试按如下方式发送 cookie 并且成功
client.AddDefaultHeader("Cookie",cookie);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。