从 Webview 中的 URI 检索请求数据 Windows 8.1

Retrieve the request data from URI in Webview Windows 8.1

我正在开发一个 Windows phone 8.1 应用程序,在这种情况下,我应该打开 webview 让用户输入卡片详细信息。输入并处理卡详细信息后,付款 API 会将交易详细信息作为 POST 请求发送回网络视图。我无法获取 POST 数据,尝试了很多方法。

如何获取服务器返回的 post 数据?提前致谢

如果您可以访问网页代码,那么您可以使用 WebBrowser.ScriptNotify 将数据从网页传输到 WP

找到了一种方法,实际上服务器 POST 请求的所有参数都在查询字符串中

处理了 webview 的 Navigation_Completed 事件,args URI 将包含所需的所有详细信息

UWP 的答案。

重要说明:我在 localcache 文件夹中本地有 html 文档。我使用 ms-appdata:// 方案在 webview 中打开它。

无限烦恼的故事(可能是某个时候的你):

如果我发送 POST 请求,我什么也得不到。我收到 WebView_NavigationStarting 事件,但只传输了 Uri。没有 POST 数据。

我尝试使用 alert 进行调试。只是意识到 alertWebView 中不起作用。

我找到了使 alert 使用 ScriptNotify 事件的修复程序。只是要意识到 ScriptNotify 不适用于 ms-appdata:// 方案。所以修复也没有奏效。

我通过转到项目设置/调试/调试器类型/应用程序和 select "Script" 了解了如何在 VS 中进行调试。然后我意识到我不能在 Visual Studio 中的脚本中放置断点。然后我发现了一个小窍门——在你的 javascript 代码中输入 "debugger;" 这个词,VS 就会停在那里。您可以使用 F10/F11 进行调试。哦,是的,宝贝!

后来终于放弃了,改成GET请求。只是要意识到它只在表单数据超过 ~2K 时才有效。在那之后什么都没有。 NavigationStarting 从未解雇,只是什么也没发生。


最后,解决方案

    private async void WebView_NavigationStarting(WebView sender, WebViewNavigationStartingEventArgs args)
    {
        string result = await this.WebView.InvokeScriptAsync("eval", new string[] { "$('form').serialize()" });
    }

不是很优雅,但是它有效!!!而且我能够通过这种方式转移 20K+。这正是我需要的。