2017-02-23 432 views
1

我正在尝试开发一个C#UWP应用程序。它的视图包含webview控件和html内容都包含在这个解决方案中。 我想拦截http请求,如果它是GET请求,返回像json,文本或其他东西。 当我开发一个android应用程序时,我可以做到这一点。 Android提供了一些方法“shouldInterceptRequest”和类型如“WebRequestResponse”。我可以在C#(而不是Xamarin)中做到这一点吗?如果是,请告诉我该怎么做。 对不起,我的英语不好。谢谢。如何拦截C#中的http请求?

不是关于WebBrowser,而是关于WebView。

+1

你想充当一个网络服务器? – DavidG

+1

[在C#中拦截由WebBrowser发出的请求]的可能重复(http://stackoverflow.com/questions/811587/intercepting-requests-made-by-webbrowser-in-c-sharp) – Gusman

+0

不,我想要捕捉请求并返回没有Web服务器的响应。 – pipikapu

回答

0

编辑

你可以听NavigationStarting事件

public MainPage() 
{ 
    this.InitializeComponent(); 
    MyWebView.NavigationStarting += MyWebViewOnNavigationStarting; 
} 

private void MyWebViewOnNavigationStarting(WebView sender, WebViewNavigationStartingEventArgs args) 
{ 
    string navigatingUri = args.Uri.ToString(); 

} 

注意,这只是web视图内捕获导航事件。

原始 “错误” 的答案

  1. 将在Asset文件夹中的HTML文件
  2. 在Web视图,把Sourcems-appx-web:///Assets/{htmlFileName}
<WebView x:Name="MyWebView" Source="ms-appx-web:///Assets/Foo.html"></WebView>

或通过代码

public MainPage() 
{ 
    this.InitializeComponent(); 
    MyWebView.Navigate(new Uri("ms-appx-web:///Assets/Foo.html")); 
} 
+0

我已经可以使用WebView.Navigate()显示我的htmls。我想拦截http请求(当点击标签,点击按钮和其他人时) – pipikapu

+0

查看已更新的答案 – Bob