Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Обработка ответа сервера после авторизации


Автор: nimed74 23.5.2012, 09:05
Господа, добрый день!
В течение долгого времени не могу найти на просторах инета решение своей проблемы. Приложение на Delphi. При открытии формы происходит авторизация на сайте при помощи IDHTTP с прикрученным IDHTTPCookieManager. После ее успешного выполнения сервер возвращает заголовки и в кукисах PHPSESSID. 
При этом при использовании браузера требуемая страница открывается в новом окне (используется JavaScript с командой NewWindow).  
Мне необходимо эту страницу (которая в браузере показывается в новом окне) после авторизации вывести в элементе ТWebBrowser моей формы.
Подскажите пожалуйста рецепт, если он есть!

Автор: Akella 23.5.2012, 12:33
Так может забросить IDHTTP и использовать только ТWebBrowser?

Автор: nimed74 23.5.2012, 13:52
Может, Вы правы. Однако с INDY авторизация проходит без проблем, можно получить код возвращаемой страницы. Можно все-таки ее запихать в WebBrowser с сохранением сценариев?
Если можно, еще ссылочку на грамотное описание WebBrowser. Чтобы поизучать матчасть, если индейцы не прокатят.

Автор: MetalFan 23.5.2012, 18:52
Цитата(nimed74 @  23.5.2012,  13:52 Найти цитируемый пост)
грамотное описание WebBrowser

http://msdn.microsoft.com/en-us/library/aa752085%28v=vs.85%29.aspx, так сказать.


Цитата(nimed74 @  23.5.2012,  09:05 Найти цитируемый пост)
сервер возвращает заголовки и в кукисах PHPSESSID

"помести" этот кук в хранилище куков IE с помощью http://msdn.microsoft.com/en-us/library/windows/desktop/aa385107%28v=vs.85%29.aspx. А затем открывай нужную страницу в WebBrowser'е

Автор: nimed74 24.5.2012, 08:59
MetalFan, 

пытаюсь воплотить сказанное Вами. Фрагмент кода:

Код

    Http.Post('http://auchan-ru.frontofresh.com/pages/login/login.php', Data);
    Http.Get('http://auchan-ru.frontofresh.com/pages/frontofish.htm');
   
   
    CookieName:=CM.CookieCollection.Items[0].CookieName;
    CookieData:=CM.CookieCollection.Items[0].CookieText;
     

    if InternetSetCookie(pchar('http://auchan-ru.frontofresh.com/pages/frontofish.htm'+http.response.Location),
      pchar(CookieName),pchar(CookieData)) then
        webbrowser1.Navigate('http://auchan-ru.frontofresh.com/pages/frontofish.htm'+http.response.Location);


В веббраузер страничка не отображается и выдает ошибку сценария. Если получить код страницы:

Код

strpage :=Http.Get('http://auchan-ru.frontofresh.com/pages/frontofish.htm'+http.response.Location);


то он правильный...
В чем проблема может быть?

Автор: MetalFan 24.5.2012, 10:13
Цитата(nimed74 @  24.5.2012,  08:59 Найти цитируемый пост)
'http://auchan-ru.frontofresh.com/pages/frontofish.htm'+http.response.Location

это что за конструкция такая??? зачем оно в SetCookie?

Автор: nimed74 24.5.2012, 10:19
Конструировал по образцу. Добавка +http.response.Location ни на что не влияет, url  все равно http://auchan-ru.frontofresh.com/pages/frontofish.htm В общем, ошибка сценария все равно выскакивает...

Автор: MetalFan 24.5.2012, 17:42
Цитата(nimed74 @  24.5.2012,  10:19 Найти цитируемый пост)
Конструировал по образцу.

По какому образцу?! при чем тут http.response.location?!
Первым параметром надо передать просто "auchan-ru.frontofresh.com".

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)