【问题标题】:C# WebBrowser Control ProxyC# WebBrowser 控制代理
【发布时间】:2012-02-20 14:19:14
【问题描述】:

如何在 C# WebBrowser 控件/组件中实现代理。

我想知道的是如何实现代理,所以我的 C# webBrowser 控件在运行时使用这个代理进行浏览。

我也不想通过注册表更改代理...因为它会影响我的正常浏览...

【问题讨论】:

标签: c# proxy webbrowser-control


【解决方案1】:
private Uri currentUri;

        private void Form1_Load(object sender, EventArgs e)
        {
            currentUri = new Uri(@"http://www.stackoverflow.com");
            HttpWebRequest myRequest = (HttpWebRequest) HttpWebRequest.Create("http://www.stackoverflow.com");
            //WebProxy myProxy = new WebProxy("208.52.92.160:80");
            //myRequest.Proxy = myProxy;

            HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();

            webBrowser1.DocumentStream = myResponse.GetResponseStream();

            webBrowser1.Navigating += new WebBrowserNavigatingEventHandler(webBrowser1_Navigating);
        }

        void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
        {
            if (e.Url.AbsolutePath != "blank")
            {
                currentUri = new Uri(currentUri, e.Url.AbsolutePath);
                HttpWebRequest myRequest = (HttpWebRequest)HttpWebRequest.Create(currentUri);

                HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();

                webBrowser1.DocumentStream = myResponse.GetResponseStream();
                e.Cancel = true;
            }
        }

您需要稍微玩一下,但我可以浏览该网站。

或者您可以尝试修改 WebRequest.DefaultWebProxy 设置: http://msdn.microsoft.com/en-us/library/system.net.webrequest.defaultwebproxy.aspx

【讨论】:

  • 然后呢?拦截所有导航事件以再次使用您自己的HttpWebRequest
  • 我不认为你可以设置WebRequest.DefaultWebProxy,但你可以自己拦截,创建自己的导航。
  • 非常感谢。像魅力一样工作!
  • 好技术(我赞成)——但这不包括回发和 cookie
  • 问题是,文档是使用代理流加载的,但是,它的其余内容,如 js 文件和图像,甚至框架 url 都是使用非代理连接加载的。我也在寻找解决方法,但似乎控件本身没有单独的设置或代理,而是使用真正的 ie 提供的东西......
猜你喜欢
  • 1970-01-01
  • 2010-09-15
  • 2010-12-25
  • 2012-08-16
  • 2011-12-17
  • 2010-10-30
  • 2014-09-17
相关资源
最近更新 更多