C#如何为所有https requstest设置代理

时间:2014-12-27 17:39:05

标签: c# web proxy

是否可以添加到用C#编写的整个应用程序中使用代理。 主要是因为下面粘贴的课程。但我也使用了几次通常的WebRequest。

我希望程序为每个将要执行的连接使用代理。有可能吗?

using System;
using System.Diagnostics;
using System.Net;

namespace TestV.1.0
{




    // To jest stworzenie klasy HttpHandler, dzieki której możemy pracować na http. Dziedziczy ona z klasy WebClient
    internal class HttpHandler : WebClient
    {
        //Tworzenie obiektu który będzie przechochowywał cookiesy
        public CookieContainer _container = new CookieContainer();

        protected override WebRequest GetWebRequest(Uri address)
        {
            var request = base.GetWebRequest(address);

            if (request is HttpWebRequest)
            {
                (request as HttpWebRequest).CookieContainer = _container;
            }
            return request;
        }

        protected override WebResponse GetWebResponse(WebRequest request)
        {
            var response = base.GetWebResponse(request);
            if (response != null)
            {
                var uriBuilder = new UriBuilder(response.ResponseUri.Scheme, response.ResponseUri.Host);
                _container.SetCookies(uriBuilder.Uri, _container.GetCookieHeader(request.RequestUri));
            }
            return response;
        }

        public void ClearCookies()
        {
            _container = new CookieContainer();
        }
    }

}

2 个答案:

答案 0 :(得分:0)

您可以将defaultProxy设置为在应用的Web.configApp.config中使用。

有关详细信息,请参阅this article

简答:您可以在全局配置文件中设置它。

<configuration>
    <system.net>
        <defaultProxy>
            <proxy
              proxyaddress="http://192.168.1.10:3128"
              bypassonlocal="false" />
        </defaultProxy>
    </system.net>
<configuration>

答案 1 :(得分:0)

您可以使用this static property更改所有WebRequest的默认代理:

WebRequest.DefaultWebProxy = new WebProxy("http://proxyserver:80/", false);