php - 如何使用 fmx 网络浏览器发送帖子数据
问题描述
我想使用 Twebbrowser 将数据发送到通过 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 应用程序发布数据?
解决方案
您可以创建自己的包含论坛和发布操作的 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=" ">'+
'</form>'+
'</BODY></HTML>'
推荐阅读
- linux - Trivy 扫描在 Qcow2 图像上失败
- react-native - React Native 获取失败
- c - 在没有另一个线程的情况下定期运行代码
- c# - 为什么我得到“非泛型方法 Parser.ParseArguments(string[], object) 不能与类型参数一起使用”
- java - java.lang.UnsatisfiedLinkError: dlopen failed: library ".so" required or dlopened by ".so" is not accessible for the namespace "classloader-namespace"
- firefox - 如何在 Appium 中将上下文从 Native App 切换到 Web App
- java - 如何通过 bulkrequest 更新嵌套的 elasticsearch 值?
- lua - Lua:从表中定义函数
- swift - 如何在flutter macos中从NSImage获取pngData?
- azure - Devexpress 文件管理器