Retrieve the request data from URI in Webview Windows 8.1

可紊 提交于 2019-12-24 15:41:49

问题


I'm developing a Windows phone 8.1 app and there's this scenario where I should open the webview for the user to enter the card details. Once the card details are entered and processed, the payment API will send the transaction details back as a POST request to the webview. I'm not able to get the POST data, tried so many methods.

How do I get the post data returned back from the server? Thanks in Advance


回答1:


If you have access to webpage code then you can use WebBrowser.ScriptNotify for transfering data from webpage to WP




回答2:


Found a way to do this, actually the Server POST request had all the arguments in the Querystring itself

Handled the Navigation_Completed event of the webview, the args URI will have all the details required




回答3:


Answer for UWP.

Important Note: I have html document locally in localcache folder. I open it in webview using ms-appdata:// scheme.

Story of infinite troubles (may be it some you some time):

If I sent the POST request, I got nothing. I get WebView_NavigationStarting event, but the Uri only was transferred. No POST data.

I try to debug using alert. Just to realize that alert doesn't work in WebView.

I found the fix that makes alert works using ScriptNotify events. Just to realize that ScriptNotify doesn't work with ms-appdata:// scheme. So the fix didn't work as well.

I learned how debug in VS by going to Project settings / Debug / Debugger type / Application process and select "Script". Then I realized that I can't put breakpoints in script in Visual Studio. And then I found a little hack -- put the word "debugger;" in your javascript code and VS will stop there. And you can debug using F10/F11. Oh, yeah, baby!

Then I finally gave up and changed it to GET request. Just to realize that it only works until form data exceed ~2K. After that nothing. NavigationStarting never fired, just nothing happens.


Finally, here the solution:

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

Not really elegant, but it works!!! And I was able to transfer 20K+ this way. This is exactly what I needed.



来源:https://stackoverflow.com/questions/36975434/retrieve-the-request-data-from-uri-in-webview-windows-8-1

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!