имитация входа на сайт в приложении Delphi FMX

Как я могу вызвать событие щелчка веб-сайта или, проще говоря, войти на веб-сайт через POST и delphi? Например, я нахожусь в лиге франшизы с некоторыми друзьями по игре Madden 15 для PS4/XBox1. Их сопутствующее приложение в магазине на самом деле является просто ссылкой на веб-сайт, и, откровенно говоря, веб-сайт неуклюж и сложен для навигации на мобильных устройствах. Я хочу воспроизвести сайт - конечно, с учетом моих потребностей - с помощью Delphi в виде мобильного приложения. Моим первым препятствием является вход в систему. Я планировал, что у меня просто будет веб-браузер в фоновом режиме приложения, которое входит в систему/загружает HMTL, из которого я могу оценивать HTML и извлекать данные, которые мне нужны для отображения визуального элемента.

Ссылка на сайт, который я хочу смоделировать здесь

Поскольку я хочу отобразить более удобный графический интерфейс в веб-браузере, я считаю, что могу изменить HTML-код браузера с помощью этого WebBrowser1.EvaluateJavaScript(ChangeElementByIDforPassandUsername_String);, где переданная строка, взятая из TEdits в форме.

после этого здесь: http://blogs.embarcadero.com/nikolay/2014/04/17/exampleofusingjavascriptforgooglemapsinthedelphixe6/

Но тогда как я могу имитировать нажатие кнопки на сайте для кнопки входа в систему?


person StacksOnStacks    schedule 20.10.2014    source источник


Ответы (1)


Забудьте о взломе мобильного браузера. Используйте компонент Indy TIdHTTP для отправки HTTP-запросов POST на сервер по мере необходимости. Используйте обычный веб-браузер для просмотра живого HTML, а затем кодируйте соответствующие поля в своем приложении. Или используйте TIdHTTP, чтобы загрузить HTML и проанализировать его в коде. Но в любом случае вы можете использовать свой собственный пользовательский интерфейс.

Например:

var
  PostData: TStringList;
  Resp: String;
begin
  PostData := TStringList.Create;
  try
    PostData.Add('email=...');
    PostData.Add('password=...');
    PostData.Add('_eventId=submit');
    PostData.Add('facebookAuth=');

    // make sure a TIdSSLIOHandlerSocketOpenSSL is assigned
    // to the TIdHTTP.IOHandler property beforehand

    Resp := IdHTTP1.Post(URL{'https://signin.ea.com/p/web/login?execution=...'}, PostData);
  finally
    PostData.Free;
  end;
end;
person Remy Lebeau    schedule 20.10.2014
comment
Сначала я пытался использовать сообщение INDY и даже включил соответствующие требования SSL для симулятора/мобильного устройства, но не смог заставить его работать. Я просто не пытался отправить почтовый запрос в приложении «Почтальон» для Google Chrome, но я также не могу заставить его работать через почтовый запрос. Используя те же параметры, которые вы только что показали выше ^^, но с учетными данными, которые, как я знаю, работают. - person StacksOnStacks; 21.10.2014
comment
Я точно знаю, что компоненты Indy TIdHTTP и TIdSSLIOHandlerSocketOpenSSL отлично работают на мобильных устройствах, поэтому я предполагаю, что вы просто не POST указали правильные данные поля, которые ожидал сайт. Используйте анализатор пакетов, чтобы увидеть, как их отправляет обычный веб-браузер, а затем скопируйте те же данные в свой код. - person Remy Lebeau; 21.10.2014
comment
Я согласен. Хорошо, я попробую это предложение. Спасибо - person StacksOnStacks; 21.10.2014