2011-01-19 3 views
29

C#에서 WebClient 개체를 사용하여 무언가를 다운로드하려고하지만 다운로드 도메인에 로그인해야합니다. 어떻게 WebClient를 사용하여 로그인하고 세션 데이터를 유지할 수 있습니까? WebClient를 사용하여 데이터를 게시하는 방법을 알고 있습니다.WebClient를 사용하여 사이트에 어떻게 로그인합니까?

+1

서버에 필요한 인증 메커니즘에는 어떤 것이 있습니까? 기본, 양식, Windows/NTLM? –

+2

롤 나는 파이어 폭스 쿠키에서 찾고 통해 값을 추가하여 문제를 해결 :) :) – MonsterMMORPG

+0

어느 값입니까? 실제 인증 쿠키를 의미합니까? 이 값은 아마도 만료되어 나중에 재사용 될 수 없다는 것을 기억하십시오. –

답변

47

당신이 가진 문제는 인증 할 수 있지만 여기에 WebClient의 쿠키 인식 버전을 유지할 수는 없습니다.

private class CookieAwareWebClient : WebClient 
{ 
    public CookieAwareWebClient() 
     : this(new CookieContainer()) 
    { } 
    public CookieAwareWebClient(CookieContainer c) 
    { 
     this.CookieContainer = c; 
    } 
    public CookieContainer CookieContainer { get; set; } 

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

     var castRequest = request as HttpWebRequest; 
     if (castRequest != null) 
     { 
      castRequest.CookieContainer = this.CookieContainer; 
     } 

     return request; 
    } 
} 

편집 : 당신이 내게 준 링크는 HTTP POST로 폼 인증을 사용 , 내가 비록 걷는 시간이 없어하지만 적어도 그것은 당신에게 구글과 시작을 제공합니다.

+1

나는 이것을 발견했습니다. 하지만 내가 뭘해야하니? httpwebrequest 또는 무엇을 통해 인증해야합니까? – MonsterMMORPG

+0

연결하려는 사이트가 어떤 인증 시스템을 사용하는지에 따라 다릅니다. –

+1

이 게시물에 실제 인증 프로세스 자체에 대한 예제가 포함되기를 바랍니다. – Shimmy

-1

Credentials 속성을 사용하십시오. 예 : 기본 인증을 사용하는 경우 적절한 사용자 이름과 암호를 사용하여이 속성을 NetworkCredential의 인스턴스로 설정해야합니다.

sample은 요청에 대해 현재 로그온 한 사용자 자격 증명을 사용하는 방법을 나타냅니다.

+1

작동하지 않습니다. ( – MonsterMMORPG

+0

Okey, 알겠습니다. 서버가 양식 인증을 사용합니다. 로그인 페이지 html에 지정된 작업 URL에 사용자 이름과 암호를 게시해야합니다. 또한 인증 정보를 받으려면 쿠키 컨테이너를 사용해야합니다. 해당 게시물에 대한 응답과 함께 제공되는 쿠키. –

+0

@MonsterMMORPG'DoesNotWorkNullReferenceException' – C4u

관련 문제