【问题标题】:Android POST form data via WebviewAndroid 通过 Webview POST 表单数据
【发布时间】:2021-01-04 10:28:14
【问题描述】:

我的 html 代码中有以下实现。

<!doctype html>
<html ng-app="app">
<head>
<title>post data</title>
</head>
<body>
<div>  
<form action="https://mypaymentgateway/pay" method="post">

<input type="hidden" id="profile_id" name="profile_id" value="123" />
<input type="hidden" id="transaction_id" name="transaction_id" value="abcd" />
<input type="hidden" id="locale" name="locale" value="en" />
<input type="submit" id="btnsubmit" value="Confirm" /> 

</form>
</div>

</body>
</html>

我想要做的是通过调用我的付款网址(“https://mypaymentgateway/pay”)的 POST 方法在 webview 中提交上述值,而无需点击“确认”按钮。我也尝试过herehere 以及其他来源的解决方案。但似乎没有任何工作正常。请帮我解决这个问题。

【问题讨论】:

  • 你能用JavaScript触发form.submit()吗?
  • 是的,这是可能的。我该怎么做?
  • 您是想从 webview 外部的 Java 代码中调用它,还是使用 javascript 在 webview 内部调用它?这取决于您何时尝试手动提交表单

标签: java android post android-webview form-data


【解决方案1】:

如果您想在不按下按钮的情况下发布表单,请尝试自行调用form.submit()

根据您的需要,您可以通过 2 种方法来执行此操作,通过 HTML 文件本身的 JavaScript 或通过启用 WebView 组件的 Java 文件。

通过 HTML 文件中的 JavaScript:

<form id="myForm" action="https://mypaymentgateway/pay" method="POST"> ... </form>
<script>
function submitMyForm() {
    var myForm = document.querySelector("#myForm");
    myForm.submit();
}
</script>

您只需在 JavaScript 中调用submitMyForm() 即可。

通过 Java 文件(在 HTML 文件中的 JavaScript 的全局范围内定义前面的函数):

//First enable your JavaScript
webView.getSettings().setJavaScriptEnabled(true);

//And then with a loadURL you can trick the WebView into executing Javascript
webView.loadUrl("javascript:submitMyForm");

归功于:Android Calling JavaScript Function in WebView

【讨论】:

  • 通过Java代码实现,在html代码格式中,js函数应该放在哪里?我收到I/chromium: [INFO:CONSOLE(1)] "Uncaught ReferenceError: submitMyForm is not defined", source: (1) 错误
  • &lt;script&gt; 标签内的任何地方
  • 如果loadUrl 不适合你,你可以试试这个stackoverflow.com/a/31291128/9191617
  • 我的 java 代码如何知道要运行哪个 js 函数?我的意思是我将 html 和 js 代码保存在一个字符串变量中。那我怎么称呼这个呢?
  • 什么意思?您将函数添加到字符串变量中,当您说 javascript:myFunctionevaluateJavaScript ("myFunction") 时,您已经在告诉 Java 要调用哪个函数
猜你喜欢
  • 2016-03-11
  • 1970-01-01
  • 2014-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-18
  • 1970-01-01
相关资源
最近更新 更多