在Windows窗体应用程序中侦听http请求

时间:2012-02-08 14:47:13

标签: c# .net winforms http

我必须编写一个.net Windows窗体应用程序,它将打开一个网页,然后能够对用户点击网页上的某些链接做出反应。我给出的规范在网页上的链接只是http链接。

我的.net应用程序是否有办法在其上安装一个最小的Web服务器,这将允许它处理给定端口上的http请求?

6 个答案:

答案 0 :(得分:1)

如果您只需要显示网页,并且对所使用的浏览器没有任何限制,那么WebBrowser控件就能解决问题。

  1. 将其拖到表单
  2. Url属性设置为您需要显示的页面
  3. 附加到Navigating活动
  4. 您现在可以回复点击,取消点击,做您喜欢的任何事情。如果它只是响应您需要的客户端点击,则不需要Web服务器。如果你需要一个网络服务器,WinForms不应该与它有任何关系。

    webBrowser1.Navigating += new WebBrowserNavigatingEventHandler(webBrowser1_Navigating);
    
    private void webBrowser1_Navigating(object sender, 
        WebBrowserNavigatingEventArgs e)
    {
       //Do your thing... maybe set e.Cancel if you don't to navigate
    }
    

答案 1 :(得分:1)

答案 2 :(得分:1)

请查看WebBrowser控件,特别是“ObjectForScripting”属性。如果您将其设置为父表单,您实际上可以从c#代码中的webbrowser中加载的页面处理javascript事件!!!

我希望有所帮助!

答案 3 :(得分:0)

根据您需要的功能,有不同的方法可以执行此操作。如果您只需要响应单击事件,并且不需要“完整”http协议支持,则只需打开一个套接字并解析浏览器中的内容即可。

或者,您可以使用HttpListener,它为您处理http协议解析并且相对容易使用。对于我认为你需要的东西,这可能是首选方法。这里简单的非编译示例:https://gist.github.com/1770645

“圣杯”在Windows窗体应用程序中托管ASP.NET运行时。我已经完成了这个并且非常复杂。运行时必须托管在一个单独的AppDomain中,所以你最终会跳过很多箍来让所有东西都运行并连接起来。它还涉及编写HttpWorkerRequest的实现,该实现更全面,框架提供了SimpleWorkerRequest。顺便提一下,这也适用于Windows服务,它为您提供了一种通过浏览器提供服务管理和监控的好方法,而不依赖于IIS。

答案 4 :(得分:0)

我已经将这个问题以不同的方式解释给其他用户了,所以也许我离开了,但是我读了它,因为他试图从网上渲染网页并对用户点击网页中的链接作出反应。 / p>

我能想到这样做的唯一方法是使用某种形式的渲染器,即webkit并挂钩,以拦截用户所做的点击。

答案 5 :(得分:0)