我需要从另一个网址的源代码中打开WebView
中的某个网址。我通过ScriptNotify
事件获取该网址的源代码。该网址包含带有GET / POST请求的<form />
&amp;参数
HTML可以包含此
<form id="pay" method="GET" target="_blank" action="https://xxxxx.com/qqq/www">
<input type="hidden" value="643" name="param1">
<input type="hidden" value="313.62" name="param2">
<input type="hidden" value="GZc6PFXOTfmY58yJyk3DTg==" name="param3">
</form>
或者这个
<form id="pay" method="POST" target="_blank" action="https://xxxxx.com/qqq/www">
<input type="hidden" value="643" name="param1">
<input type="hidden" value="313.62" name="param2">
<input type="hidden" value="GZc6PFXOTfmY58yJyk3DTg==" name="param3">
</form>
现在,如果我有GET方法,那么我可以通过解析源代码来开发URL,它将成为我们的示例。我可以在WebView
https://xxxxx.com/qqq/www/?param1=643¶m2=313.62¶m3=GZc6PFXOTfmY58yJyk3DTg==
如果有POST请求,我怎么能这样做?
答案 0 :(得分:2)
WebView
上没有允许您执行POST请求的方法。不过,您可以通过调用WebView
中的JavaScript函数来实现。首先,您需要构建一个包含您需要的表单的网页和一个提交它的JavaScript函数:
var html =
@"<html>
<head>
<script type=""text/javascript"">
function Submit()
{
document.getElementById('pay').submit();
}
</script>
</head>
<body>
<form id=""pay"" method=""POST"" action=""https://xxxxx.com/qqq/www"">
<input type=""hidden"" value=""643"" name=""param1"">
<input type=""hidden"" value=""313.62"" name=""param2"">
<input type=""hidden"" value=""GZc6PFXOTfmY58yJyk3DTg=="" name=""param3"">
</form>
</body>
</html>";
然后导航到此HTML字符串并调用函数:
webView.NavigateToString(html);
webView.InvokeScript("Submit", null);
在测试期间,第二个调用总是在页面实际加载之前执行并因此失败,所以我不得不通过对LoadCompleted
事件作出反应来解决它:
webView.LoadCompleted += WebViewOnLoadCompleted;
webView.NavigateToString(html);
private void WebViewOnLoadCompleted(object sender, NavigationEventArgs navigationEventArgs)
{
webView.LoadCompleted -= WebViewOnLoadCompleted;
webView.InvokeScript("Submit", null);
}