首先我用 cookie 容器创建了 HttpClientHandler
CookieContainer cookies = new CookieContainer();
HttpClientHandler handler = new HttpClientHandler();
handler.CookieContainer = cookies;
handler.UseCookies = true;
var hc = new HttpClient(handler);
然后我点击基本网址只是为了获取带有“__RequestVerificationToken”的cookie
string r = await hc.GetStringAsync(BaseUrl);
然后我将用户名/密码发布到登录网址
HttpContent content = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("UserName", "admin"),
new KeyValuePair<string, string>("Password", password),
});
HttpResponseMessage response = await hc.PostAsync(LoginUrl, content);
然后我收到服务器错误“所需的防伪表单字段“__RequestVerificationToken”不存在”。
但是当我在 fiddler 中检查请求时,我可以看到请求的 cookie 中已经添加了“__RequestVerificationToken”。
然后我尝试在IE中手动登录,并检查IE发送的请求类型。
然后我发现IE也把“__RequestVerificationToken”放在了表单中,所以我在表单中添加了cookie
new KeyValuePair<string, string>("__RequestVerificationToken", cookies.GetCookies(new Uri(BaseUrl)).Cast<Cookie>().FirstOrDefault(x => x.Name == "__RequestVerificationToken").Value)
然后我得到了这个错误
“验证提供的防伪令牌失败。cookie“_RequestVerificationToken”和表单字段“ _RequestVerificationToken”已交换。”
然后我无法在谷歌上得到任何关于这个错误的搜索结果。
任何想法?
谢谢