我使用Fiddler扩展RequestToCode来重播登录Yahoo的POST。
运行代码时,我可以在Fiddler中看到登录成功,并且响应中有10个cookie。
不过在我的代码中,响应。Cookies的计数为0。
所以我更新了HTTPWebRequest并进行了设置:
request.CookieContainer = new CookieContainer();
当我再次运行代码并在Fiddler中查看时,我看到登录失败,因为响应导航到失败的登录URL。
我的最终目标是从登录尝试中获取Cookie,以在以后的Yahoo Get请求中使用。
为什么设置cookie容器会导致失败?
答案 0 :(得分:0)
可能是因为您在每个请求上都初始化了新的CookieContainer
。
声明公共变量CookieContainer cookies = new CookieContainer();
现在,您的新请求将使用相同的CookieContainer
,例如:
var request = (HttpWebRequest)WebRequest.Create("https://www.yahoo.com/");
request.CookieContainer = cookies;
request.Method = "GET";
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36";
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8";
request.Headers.Add("accept-language", "en,hr;q=0.9");
request.Headers.Add("accept-encoding", "");
request.Headers.Add("Upgrade-Insecure-Requests", "1");
WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
string responseFromServer = reader.ReadToEnd();
reader.Close();
response.Close();