Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.02.2011, 19:17   #1
DYMa
 
Регистрация: 03.02.2011
Сообщений: 3
Вопрос Перехват POST данных через WebBrowser

Доброго времени суток обитатели форума!
Необходима помощь по Delphi.

Необходимо сохранить в переменную данные, введенные в поле в компоненте WebBrowser, после нажатия на кнопку авторизации.

Метод передачи данных POST.

Данные на странице отправки слудующие:

Цитата:
<INPUT value=text id=l name=login>
Пробовал следующий метод отлова, который не дал результа:

Код:
procedure TForm1.WebBrowser1BeforeNavigate2(ASender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
var
  f, i: integer;
  s: string;
begin
  for f := 0 to webbrowser1.OleObject.Document.forms.Length - 1 do
    begin
      for i := 0 to webbrowser1.OleObject.Document.forms.Item(f).elements.Length - 1 do
        if webbrowser1.OleObject.Document.forms.Item(f).elements.item(i).type = 'INPUT'
          then
            if webbrowser1.OleObject.Document.forms.Item(f).elements.item(i).name = 'login'
              then
                s:=webbrowser1.OleObject.Document.forms.Item(f).elements.item(i).value);
    end;
end;
Конкретно программа на Delphi XE. Заранее спасибо за помощь!

Последний раз редактировалось Stilet; 03.02.2011 в 21:05.
DYMa вне форума Ответить с цитированием
Старый 03.02.2011, 21:06   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А ты пошаговочкой пройдись. И узнай на какой if не попадает.
Я кстати бы упростил
Код:
  for f := 0 to webbrowser1.OleObject.Document.forms.Length - 1 do
    begin
      for i := 0 to webbrowser1.OleObject.Document.forms.Item(f).elements.Length - 1 do
            if webbrowser1.OleObject.Document.forms.Item(f).elements.item(i).name = 'login'
              then
                s:=webbrowser1.OleObject.Document.forms.Item(f).elements.item(i).value);
    end;
Зачем еще и тип проверять?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.02.2011, 23:24   #3
DYMa
 
Регистрация: 03.02.2011
Сообщений: 3
По умолчанию

Stilet, спасибо за поддержку. Проблему решил.

Как бы смешно не звучало, но вот так работает:

Цитата:
procedure TForm1.WebBrowser1BeforeNavigate2(A Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
var
f, i: integer;
begin
for f := 0 to webbrowser1.OleObject.Document.form s.Length - 1 do
begin
for i := 0 to webbrowser1.OleObject.Document.form s.Item(f).elements.Length - 1 do
//
if webbrowser1.OleObject.Document.form s.Item(f).elements.item(i).type = 'INPUT'
then
if webbrowser1.OleObject.Document.form s.Item(f).elements.item(i).name = 'login'
then
Memo1.Lines.Add(webbrowser1.OleObje ct.Document.forms.Item(f).elements. item(i).value);
end;
А вот так нет:

Цитата:
procedure TForm1.WebBrowser1BeforeNavigate2(A Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
var
f, i: integer;
begin
for f := 0 to webbrowser1.OleObject.Document.form s.Length - 1 do
begin
for i := 0 to webbrowser1.OleObject.Document.form s.Item(f).elements.Length - 1 do

if webbrowser1.OleObject.Document.form s.Item(f).elements.item(i).type = 'INPUT'
then
if webbrowser1.OleObject.Document.form s.Item(f).elements.item(i).name = 'login'
then
Memo1.Lines.Add(webbrowser1.OleObje ct.Document.forms.Item(f).elements. item(i).value);
end;
Заметили разницу? Иронично и парадоксально Хотелось бы знать причину
DYMa вне форума Ответить с цитированием
Старый 05.05.2014, 16:15   #4
QVO
 
Аватар для QVO
 
Регистрация: 09.02.2012
Сообщений: 9
По умолчанию

Цитата:
Сообщение от DYMa Посмотреть сообщение
Stilet, спасибо за поддержку. Проблему решил.

Как бы смешно не звучало, но вот так работает:



А вот так нет:



Заметили разницу? Иронично и парадоксально Хотелось бы знать причину
Потому что он посчитал две косые за новую строку

Цитата:
for f := 0 to webbrowser1.OleObject.Document.form s.Length - 1 do
begin
for i := 0 to webbrowser1.OleObject.Document.form s.Item(f).elements.Length - 1 do
begin
//
if webbrowser1.OleObject.Document.form s.Item(f).elements.item(i).type = 'INPUT'
then
if webbrowser1.OleObject.Document.form s.Item(f).elements.item(i).name = 'login'
then
Memo1.Lines.Add(webbrowser1.OleObje ct.Document.forms.Item(f).elements. item(i).value);
end;
end;
QVO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перехват нажатия кнопки в WebBrowser Pinyata Общие вопросы Delphi 6 26.01.2011 21:01
Получение cookie и POST параметров через WebBrowser (C# .net2) alexplato Фриланс 2 21.01.2011 13:56
POST в Webbrowser-е StartMis Работа с сетью в Delphi 2 22.11.2010 13:29
Перехват POST передачу данных Verst Общие вопросы Delphi 4 24.11.2009 15:34
WebBrowser POST micq Компоненты Delphi 5 19.09.2008 21:37