在使用WebClient时,是否有一种优雅的方法来确定我是否在代理服务器后面?

时间:2013-02-08 18:54:13

标签: c# webproxy

现在我正在使用try-catch来处理WebException以确定我是否需要使用代理 - 这很难看。

不是使用try-catch来控制程序执行,而是如果我需要使用代理,我想提前知道。

这是我的代码:

private bool m_useDefaultWebProxy;

public void DownloadFile(String url, String fileName) {
    try {
        using (WebClient webClient = new WebClient()) {
            if (m_useDefaultProxy) {
                this.SetDefaultProxy(webClient)
            }
            webClient.DownloadFile(url, fileName);
        }
    }
    catch (WebException ex) {
        this.HandleWebProxyError(ex);
    }
}

private void HandleWebProxyError(WebException ex) {
    HttpStatusCode = ((HttpWebResponse)ex.Response).StatusCode;
    if (statusCode == HttpStatusCode.ProxyAuthenticationRequired) {
        this.m_useDefaultWebProxy.Checked = true;        
    }
}

private void SetDefaultWebProxy(WebClient webClient) {
    IWebProxy proxy = WebRequest.GetSystemWebProxy();
    proxy.Credentials = CredentialCache.DefaultNetworkCredentials;
    webClient.Proxy = proxy;
}

0 个答案:

没有答案