C# - WebRequest mit Cookies
Ich habe eine winforms-Anwendung habe ich die Arbeit auf, führt mehrere tests auf Verbraucher-Konten. Die tests erfordern eine einmalige Anmeldung, um auszuführen.
string paramaters = "authmethod=on&chkRememberMe=on&login-form-type=pwd&password=" + pw.Text + "&userid=" + uid.Text + "&username=" + uid.Text;
string strResponse;
HttpWebRequest requestLogin = (HttpWebRequest)WebRequest.Create("https://www.url.com/login.form");
requestLogin.Method = "POST";
requestLogin.CookieContainer = cookieJar;
requestLogin.ContentType = "application/x-www-form-urlencoded";
requestLogin.ContentLength = paramaters.Length;
StreamWriter stOut = new StreamWriter(requestLogin.GetRequestStream(), System.Text.Encoding.ASCII);
stOut.Write(paramaters);
stOut.Close();
StreamReader stIn = new StreamReader(requestLogin.GetResponse().GetResponseStream());
strResponse = stIn.ReadToEnd();
stIn.Close();
Dieses Skript funktioniert der login einwandfrei, das problem ist, wenn ich brauche, um tatsächlich laufen die tests, die ich brauchen, um wieder alle Ergebnisse in einen string (HTML-Ergebnisse).
private string runTestRequest(Uri url, string parameters)
{
string testResults = string.Empty;
HttpWebRequest runTest = (HttpWebRequest)WebRequest.Create(url);
runTest.CookieContainer = cookieJar;
runTest.Method = "POST";
runTest.ContentType = "application/x-www-form-urlencoded";
StreamWriter stOut = new StreamWriter(runTest.GetRequestStream(), System.Text.Encoding.ASCII);
stOut.Write(parameters);
stOut.Close();
StreamReader stIn = new StreamReader(runTest.GetResponse().GetResponseStream());
testResults = stIn.ReadToEnd();
stIn.Close();
return testResults;
}
Aber es geht und versucht, um sich einzuloggen. Wie kann ich die Cookies von der vorherigen login-Anforderung mit diese + viele andere web-Anfragen?
Danke für die Hilfe.
EDIT:
Fügte ich diese zu meinem code, doch das sollte das gleiche tun wie BrokenGlass ist zu sagen außer nur ein wenig anders, aber immer noch nicht funktioniert.
foreach (Cookie cookie in responseLogin.Cookies)
{
cookieJar.Add(new Cookie(cookie.Name.Trim(), cookie.Value.Trim(), cookie.Path, cookie.Domain));
richTextBox2.Text += cookie.Name.ToString() + Environment.NewLine + cookie.Value.ToString() + Environment.NewLine + cookie.Path.ToString() + Environment.NewLine + cookie.Domain.ToString();
}
- haben Sie überprüft, was in cookieJar beim laufen neue Anfrage? hat es alles enthalten?
- ich habe eine MessageBox.Show(cookieJar.Zählen.ToString()); und es zeigte sich, dass die Zählung ist 2
Du musst angemeldet sein, um einen Kommentar abzugeben.
Etwas, wie das funktionieren sollte, ich benutze ähnlichen code zum speichern der login-cookie:
Request
aus? (inRequest.Cookies[i]
)