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
InformationsquelleAutor Alex | 2010-11-11
Schreibe einen Kommentar