2012-06-27 2 views
4

407 권한없는 예외가 발생하는 코드가 있습니다.웹 클라이언트 객체에 프록시 인증 세부 정보를 추가하는 방법

파일을 다운로드하려고하는데 아래 예제 코드가 있습니다. netcredentials 및 webproxy 시도했지만 헛된.

WebClient webClient = new WebClient(); 
NetworkCredential netCred=new NetworkCredential(); 
netCred.UserName="<<userid>>"; 
netCred.Password="<<password>>"; 
netCred.Domain="<<windowsdomainname>>"; 
webClient.Credentials = netCred; 
WebProxy wp = new WebProxy(); 
wp.Credentials = netCred; 
wp.Address = new Uri(@"http://proxy-xx.xxxx.co.uk:8080/proxy.pac"); 
webClient.Proxy = wp; 
webClient.DownloadFile("http://www.win-rar.com/postdownload.html?&L=0", @"c:\winrar.exe"); 
+0

왜 직접 다운로드 대신 프록시를 사용하고 있습니까? –

+0

@Furqan 귀하의 회신에 많은 감사드립니다. 나는 NetworkCredentials를 사용해 보았으나 WebProxy를 추가 할 수 없었다. 이것은 데스크톱 응용 프로그램입니다. 회사 네트워크를 사용하기 때문에 프록시 인증을 요청할 것입니다. 나는 그것을 피하고 싶다. 따라서 내 웹 클라이언트 개체에 자격 증명을 추가하려고합니다. –

+1

ok 그런 다음'webClient.Credentials = netCred;'줄을 제거하고 다시 시도하십시오. –

답변

0

질문을 찾기 전에 나는 407을 얻고있었습니다. 소스 코드를 다음과 같이 수정했습니다.

try 
{ 
    var netCred = new NetworkCredential { UserName = "ununun", Password = @"pwpwpw", Domain = @"domain" }; 
    var webProxy = new WebProxy { Credentials = netCred }; 
    var webClient = new WebClient { Proxy = webProxy }; 
    webClient.DownloadFile(url, saveFileName); 
} 
catch (Exception ex) 
{ 
    Console.WriteLine("Exception:\n{0}\n{1}", ex.Message, ex.StackTrace); 
    return; 
} 
0

이것은 내가 어제하는 것입니다.

WebClient client = new WebClient(); 
ICredentials cred; 
cred = new NetworkCredential(user, password); 
client.Proxy = new WebProxy("xxxx-proxy", true, null, cred); 

희망!

관련 문제