2014-10-20 72 views
0

如何调用网站的点击事件,或者更简单地说,通过POST和delphi登录到网站?例如,我和一些朋友一起参加了PS4/XBox1游戏Madden 15的特许经营联盟。他们的商店伴侣应用程序实际上只是一个链接到网站,并且网站非常坦率地说,笨重并且很难在移动设备上导航。我想复制这个网站 - 当然需要剪裁我的需求 - 使用Delphi作为移动应用程序的形式。我的第一个障碍是登录。我的计划是,我只需要在应用程序的后台登录/加载HMTL的Web浏览器,从中可以评估HTML并根据列出视觉需要提取数据。在delphi应用程序中模拟网站登录FMX

链接到的网站,我想模拟here

因为我想在网页浏览器中显示一个更友好的图形用户界面,我相信我可以修改浏览器的HTML与此WebBrowser1.EvaluateJavaScript(ChangeElementByIDforPassandUsername_String); 其中所传递的字符串它取自表格上的TEdits。

下面这个位置: http://blogs.embarcadero.com/nikolay/2014/04/17/exampleofusingjavascriptforgooglemapsinthedelphixe6/

但我怎么可以调用该网站的登录按钮上模拟buttonclick?

回答

1

忘记劫持手机浏览器。根据需要使用Indy的TIdHTTP组件向服务器发送HTTP POST请求。使用普通的WebBrowser查看实时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; 
+0

我尝试使用INDY后在第一,甚至包括了模拟器/移动适当的SSL要求,但我不能让它开始工作。我只是没有尝试在谷歌浏览器的“邮递员”应用程序中发送邮件请求,但是我无法通过邮件请求在那里发送邮件。使用与上面刚刚显示的相同的参数^^但凭借凭据我知道工作。 – StacksOnStacks 2014-10-21 00:00:09

+0

我知道Indy的TIdHTTP和TIdSSLIOHandlerSocketOpenSSL组件在移动设备上工作正常,所以我的猜测是您根本没有'POST'该网站所期望的正确的字段数据。使用数据包嗅探器来查看普通WebBrowser如何发布它们,然后在代码中复制相同的数据。 – 2014-10-21 00:03:55

+0

我同意。好的,我会尝试这个建议。谢谢 – StacksOnStacks 2014-10-21 00:08:01

相关问题