У меня тупая проблема. У меня есть метод, который возвращает инициализированный запрос для повторной регистрации на каком-то внешнем веб-сайте.
protected HttpWebRequest GetLoginRequest()
{
const string url = "https://someurl.com/login";
var queryParams = new ArrayList
{
String.Format("{0}={1}", "email", Email),
String.Format("{0}={1}", "password", DecryptedPassword)
};
var parameters = String.Join("&", (String[])queryParams.ToArray(typeof(String)));
var request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = parameters.Length;
request.Timeout = 10000;
var streamWriter = new StreamWriter(request.GetRequestStream());
streamWriter.Write(parameters);
streamWriter.Close();
return request;
}
Я вызываю этот метод из двух мест в моем коде. Первый звонок выглядит так:
var request = GetLoginRequest();
var response = (HttpWebResponse)request.GetResponse();
И второй имеет CookieContainer, назначенный на запрос:
var cookieContainer = new CookieContainer();
var request = GetLoginRequest();
request.CookieContainer = cookieContainer;
var response = (HttpWebResponse)request.GetResponse();
потому что мне нужно хранить CookieContainer.
Дело в том, что вход выполняется только во втором случае. В первом случае я получаю ответ со страницы входа. Я проверил все случаи, и оба получающихся запроса кажутся идентичными. Я бы предположил, что это целевой сайт, но все же я не вижу причин для этого.
Не могли бы вы объяснить, в чем причина, потому что это поведение кажется мне довольно неочевидным.