【问题标题】:how to send post data with fmx webbrowser如何使用 fmx 网络浏览器发送帖子数据
【发布时间】:2019-11-13 22:40:47
【问题描述】:

我想用 Twebbrowser 将数据发送到 web,由 php $_post 方法接收,然后在 webbrowser 上显示为网页。此代码在我的 vcl 应用程序中完美运行

uses
httpapp;


Var
strData: string;
  PostData: OleVariant;
  Headers: OleVariant;
  i: Integer;
  url:string;
begin    
url :='http://www.abc...com'
strData := 'id=' + HTTPEncode('ID') + '&' +
    'ik=' + HttpEncode('ID2');
PostData := VarArrayCreate([0, Length(strData) - 1], varByte);
for i := 1 to Length(strData) do
    PostData[i-1] := Ord(strData[i]);
Headers := 'Content-Type: application/x-www-form-urlencoded' + #10#13;
WebBrowser1.Navigate(url+'/logs.php',EmptyParam,EmptyParam,PostData,Headers);
end;

但是当我尝试使用 fmx for android 设备应用程序时,它会在 webbrowser.navigate 上向我发送错误消息“实际参数过多”。我如何使用 fmx webbrowser 为 fmx / android 应用程序发布数据?

【问题讨论】:

  • 我建议你检查 i := 1 到 Length(strData) 的行做 PostData[i-1] := Ord(strData[i]);因为 Fmx 而不是 VCL 使用基于 1 的数组,而 VCL 使用基于 0 的数组。替换 '''for i := 1 to Length(strData) do PostData[i-1] := Ord(strData[i]);''' for '''for i := 1 to Length(strData) do PostData [i] := Ord(strData[i]);''' 代码和平。我没有检查。我只记得我过去遇到过这个问题。
  • 我已经在 vcl 应用程序上运行它并运行它,但是在 fmx webbrowser 上导航时错误太多参数,所以我认为问题是 fmx.webbrowser.navigate 上没有参数可以输入, ,它只是url链接可以添加..
  • OleVariantAndroid 听起来不是一个可行的组合(OLEWindows 的东西)。而FMX.WebBrowser.Navigate 方法不接受或只接受一个参数(const AURL: string)。因此错误。
  • 是的,它只有一个参数(url)。那么,还有其他方法可以发送帖子数据并在 webbrowser 上显示吗? twebbrowser 不支持将数据发布到 php 吗?谢谢..

标签: php android delphi twebbrowser postdata


【解决方案1】:

您可以创建自己的 html,其中包括论坛和发布操作,并使用 javascript 为您自动发布表单,然后只需调用 TWebBrowser.LoadFromStrings 从字符串 var 加载 html。

MyWebBrowser.LoadFromStrings({$I 'html\string_login_by_code.html.inc'},strSiteBaseURL);

“html\string_login_by_code.html.inc”文件看起来像:

'<HTML><HEAD></HEAD><BODY>'+
'<script>'+
'window.onload = function() '+
'  {'+
'    document.getElementById("v_login").submit();'+
'  }'+
'</script>'+
'<form id="v_login" style="display:none" method="post" action="'+PostURL+'">'+
'<input type="hidden" name="'+chUserName+'" value="'+sUserName+'">'+
'<input type="hidden" name="'+chPassword+'" value="'+sPassword+'">'+
'<input type="submit" class="menu_submit" value="&nbsp;">'+
'</form>'+
'</BODY></HTML>'

【讨论】:

  • 加载的网页上还有另一个操作,例如编辑或删除操作,如果我使用 webbrowser.loadfromstrings,我认为该操作将不起作用..
  • 您只需使用网页的一部分来复制所需的自动表单操作,自己填写您想要的字段,然后像我给出的示例一样使用 javascript 自动提交。
  • 哇,它的好主意,我已经试过你的把戏和它的工作......谢谢......
猜你喜欢
  • 2018-12-31
  • 2016-02-14
  • 2015-02-19
  • 1970-01-01
  • 1970-01-01
  • 2018-05-13
  • 2020-10-29
  • 2017-02-21
相关资源
最近更新 更多