1

我需要從另一個URL的源代碼中打開WebView中的某個URL。我通過ScriptNotify事件獲取該URL的源代碼。該URL包含<form />與GET/POST請求&參數如何在Windows應用商店App中的WebView中打開具有POST請求方法的URL

的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&param2=313.62&param3=GZc6PFXOTfmY58yJyk3DTg==

打開我如何能做到同樣的,如果有POST請求?

+0

是否有一個理由不使用'System.Net.Http.HttpClient'或類似的框架類來發送get/POST請求,而不是使用WebView進行api調用? – Sushil

+0

我只是不想獲得HTTP響應。我使用WebView是因爲POST請求打開某種形式,用戶將填寫該表單。 – Xyroid

回答

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); 
} 
+0

有沒有可能不用javascript修改網頁? – Xyroid

+0

@Xyroid我不知道一個方法。 –

相關問題