У меня есть приложение winforms, над которым я работал, он запускает несколько тестов для учетных записей пользователей. Для выполнения тестов требуется один раз для входа в систему.C# WebRequest с использованием файлов cookie
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();
Этот скрипт работает для входа в систему просто отлично, проблема, когда мне нужно на самом деле запустить тесты мне нужно, чтобы вернуть все результаты в виде строки (результаты 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;
}
Но он идет и пытается войти. Как я могу использовать Cookie из предыдущего запроса на вход с этим + многими другими веб-запросами?
Спасибо за помощь.
EDIT:
Я добавил это в мой код еще, который должен сделать то же самое, как BrokenGlass говорит, за исключением лишь немного отличается, но все еще не работает.
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();
}
вы проверили, что в cookieJar при запуске нового запроса? содержит ли что-нибудь? – Artemiy
Я сделал MessageBox.Show (cookieJar.Count.ToString()); и он показал, что счет 2 – Alex