2016-12-29 103 views
0

我需要将自定义用户代理和身份验证令牌插入到从webview制作的所有请求中。拦截从webview制作的HttpRequests是否可能?拦截Web视图请求Xaml

回答

0

在UWP中,我们应该能够使用WebView.NavigateWithHttpRequestMessage方法将WebView导航到具有POST请求和HTTP标头的URI。

在WebView中有一个NavigationStarting事件,它发生在WebView导航到新内容之前。所以我们应该能够将WebViewNavigationStartingEventArgs.Cancel属性设置为true以取消导航。

例如:

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    NavigateWithHeader(new Uri("http://www.whoishostingthis.com/tools/user-agent/")); 
} 

private void NavigateWithHeader(Uri uri) 
{ 
    var requestMsg = new Windows.Web.Http.HttpRequestMessage(HttpMethod.Get, uri); 
    string ua = "Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko"; 
    requestMsg.Headers.Add("User-Agent", ua); 
    MyWebView.NavigateWithHttpRequestMessage(requestMsg); 
    MyWebView.NavigationStarting += Wb_NavigationStarting; 
} 

private void Wb_NavigationStarting(WebView sender, WebViewNavigationStartingEventArgs args) 
{ 
    MyWebView.NavigationStarting -= Wb_NavigationStarting; 
    args.Cancel = true; 
    NavigateWithHeader(args.Uri); 
} 
+0

是否有可能拦截从Javascript也提出的要求。我想在webview中加载下面提到的内容。 javascript将生成详细页面,但问题在于生成的html内容,在src中没有为图像和js文件指定协议(http或https)。我想手动添加这个页面来工作 – Prince

+0

“ – Prince