Мне нужно войти на сайт и выполнить действие. Веб-сайт основан на REST, поэтому я могу легко войти в систему, выполнив это (информация для входа включена в строку запроса в URL-адресе, поэтому мне не нужно устанавливать учетные данные):
CookieContainer cookieJar = new CookieContainer();
HttpWebRequest firstRequest = (HttpWebRequest) WebRequest.Create(loginUrl);
firstRequest.CookieContainer = cookieJar;
firstRequest.KeepAlive = true;
firstRequest.Method = "POST";
HttpWebResponse firstResponse = (HttpWebResponse)firstRequest.GetResponse();
Это работает и регистрирует меня. Я получаю cookie для поддержания сеанса, и он сохраняется в cookieJar, показанном выше. Затем я делаю второй запрос, например:
HttpWebRequest secondRequest = (HttpWebRequest) WebRequest.Create(actionUrl);
secondRequest.Method = "POST";
secondRequest.KeepAlive = true;
secondRequest.CookieContainer = cookieJar;
WebResponse secondResponse = secondRequest.GetResponse();
И я гарантирую, что назначу файлы cookie новому запросу. Но по какой-то причине это не работает. Я получаю сообщение об ошибке: «Время ожидания моего сеанса истекло или истекло», и это делается один за другим, так что это не проблема времени.
Я использовал Fiddler для проверки заголовков HTTP, но мне это сложно, так как это HTTPS. (Я знаю, что могу его расшифровать, но, похоже, это не работает.)
Я могу взять свой URL-адрес для этой службы отдыха и вставить их в firefox, и все работает нормально, так что это должно быть что-то, что я делаю неправильно, а не другой конец соединения.
Я не очень хорошо знаком с HTTPS. Нужно ли мне что-то делать для поддержания сеанса? Я думал, что это будет файл cookie, но, возможно, мне нужно что-то еще поддержать в двух запросах?
Вот заголовки, возвращаемые, когда я отправляю первый запрос (за исключением того, что я изменил cookie, чтобы защитить невиновных!):
X-DB-Content-length=19
Keep-Alive=timeout=15, max=50
Connection=Keep-Alive
Transfer-Encoding=chunked
Content-Type=text/html; charset=WINDOWS-1252
Date=Mon, 16 Nov 2009 15:26:34 GMT
Set-Cookie:MyCookie stuff goes here
Server=Oracle-Application-Server-10g
Любая помощь будет принята с благодарностью, у меня заканчиваются идеи.