Php 如何使用fmx webbrowser发送post数据

Php 如何使用fmx webbrowser发送post数据,php,android,delphi,twebbrowser,postdata,Php,Android,Delphi,Twebbrowser,Postdata,我想用Twebbrowser将数据发送到web,通过php$_PostMethode接收数据,然后将其作为网页显示在webbrowser上。这段代码在我的vcl应用程序中非常有效 uses httpapp; Var strData: string; PostData: OleVariant; Headers: OleVariant; i: Integer; url:string; begin url :='http://www.abc...com' strData :

我想用Twebbrowser将数据发送到web,通过php$_PostMethode接收数据,然后将其作为网页显示在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;

但当我在android设备的fmx应用程序中试用时,它会在webbrowser.navigate上向我发送一条eror消息“太多实际参数”。如何使用fmx webbrowser for fmx/android应用程序发布数据?

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

MyWebBrowser.LoadFromStrings({$I 'html\string_login_by_code.html.inc'},strSiteBaseURL);
“html\string\u login\u by\u 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>'
“”+
''+
'window.onload=function()'+
'  {'+
'document.getElementById(“v_登录”).submit();'+
'  }'+
''+
''+
''+
''+
''+
''+
''

我建议您检查该行的I:=1 to Length(strData)do PostData[I-1]:=Ord(strData[I]);因为Fmx而不是VCL使用基于一的阵列,VCL使用基于零的阵列。将i:=1 to Length(strData)do PostData[i-1]:=Ord(strData[i]);替换为'''对于''''for i:=1 to Length(strData)do PostData[i]:=Ord(strData[i]);''代码的和平。我没有检查。我只记得我以前遇到过这个问题。我在vcl应用程序及其工作上运行过它,但在fmx webbrowser上导航时出错的参数太多,所以我认为问题是没有参数可以在fmx.webbrowser.navigate上输入,,它只是url链接可以添加进去。
OleVariant
Android
听起来不是一个可行的组合(
OLE
是一个
Windows
的东西)。和
FMX.WebBrowser.Navigate
方法不接受任何参数,或只接受一个参数
(const AURL:string)
。因此,error.Yup是它唯一的一个参数(url)。那么,是否有其他方式发送post数据并在webbrowser上显示?twebbrowser不支持将数据发布到php吗?谢谢..在加载的网页上还有另一个操作,比如编辑或删除操作,,如果我使用webbrowser.loadfromstrings,我认为该操作不会起作用..你只需将网页的一部分复制到所需的自动表单操作,填写你想要的字段,然后使用javascript自动提交,就像我给出的示例一样。哇,这是个好主意,我已经试过你的把戏了。。谢谢