Tengo una aplicación de winforms en la que he estado trabajando que ejecuta múltiples pruebas en cuentas de consumidores. Las pruebas requieren un inicio de sesión único para ejecutarse.C# WebRequest usando cookies
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();
Este script funciona para el inicio de sesión muy bien, el problema es cuando se necesita para ejecutar efectivamente las pruebas que necesito para devolver todos los resultados en una cadena (resultados HTML).
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;
}
Pero va y trata de iniciar sesión. ¿Cómo puedo usar la Cookie de la solicitud de inicio de sesión anterior con esta + muchas otras solicitudes web?
Gracias por la ayuda.
EDIT:
he añadido esto a mi código pero que debería hacer lo mismo que está diciendo BrokenGlass excepto un poco diferente, pero todavía no funciona.
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();
}
¿verificó lo que está en CookieJar cuando se ejecuta nueva solicitud? ¿contiene algo? – Artemiy
hice un MessageBox.Show (cookieJar.Count.ToString()); y mostró que el recuento es 2 – Alex