Мне нужно зайти на сайт и выполнить действие. Сайт REST на базе, так что я могу легко войти в систему, делая это (данные входа в систему включен в качестве строки запроса на URL, так что я dont't необходимо установить учетные данные):C#, поддерживающий сеанс по HTTPS на клиенте
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();
И я гарантирую, что я назначил куки-файлы новому запросу. Но почему-то это не работает. Я возвращаю сообщение об ошибке: «моя сессия закончилась или закончилась», и это делается один за другим, так что это не проблема времени.
Я использовал Fiddler для изучения HTTP-заголовков, но я нахожу это трудным, так как это HTTPS. (Я знаю, что могу расшифровать его, но, похоже, не работает хорошо.)
Я могу взять свой URL-адрес для этой службы отдыха и вставить их в firefox, и все работает отлично, так что это должно быть что-то, что я делаю неправильно, а не на другом конце соединения.
Я не очень хорошо знаком с HTTPS. Нужно ли мне что-то делать, чтобы поддерживать сеанс? Я думал, что это будет файл 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
Любая помощь будет оценена, я бегу из идей.
Microsoft, похоже, исправила это в .NET 4. – Kelly
Привет, Келли, я также столкнулся с некоторым сроком действия, который может быть похож на ваш случай выше, не могли бы вы посмотреть на эту ссылку: http://stackoverflow.com/ вопросы/22957840/crawling-session-expired – bluewonder