2010-11-20 8 views
6

WebBrowser control을 사용하여 로그인 페이지를 탐색하고 파일을 다운로드합니다. 컨트롤을 사용하여 다운로드를 자동으로 관리하는 방법을 찾을 수 없기 때문에 WebClient 클래스를 사용하여이 작업을 수행하고 있습니다.WebBrowser 컨트롤 다운로드 세션에서 파일

WebClient이 브라우저와 동일한 컨텍스트/세션에 없기 때문에 문제는 보안 오류 화면입니다.

내가 세션의 컨텍스트를 WebClient에 전달할 수있는 방법에 대한 아이디어가 있으십니까?

+0

늦은 대답을 해결'URLDownloadToCacheFile' [이 사용할 수있다 (http://stackoverflow.com/a/19025793/1768303). – Noseratio

답변

3

WebBrowser 세션에서 쿠키와 헤더를 에뮬레이션하고 다시 사용하여 WebClient에서 세션을 가장 할 수는 있지만 그 경로에서 이미 뜨거운 것처럼 보입니다.

다음은 어떻게 진행할까요?

  1. WebBrowser의 쿠키와 헤더를 가져옵니다.

    쿠키 : WebBrowser 컨트롤의 DocumentCompleted 이벤트를 처리하고 DocumentCompleted 이벤트에서 쿠키 집합을 구문 분석하여 WebBrowser 세션에서 쿠키를 가져올 수 있습니다.

    헤더 : Fiddler [www.fiddler2.com/]와 같은 프록시를 사용하여 헤더를 읽으면 서버에서 필요한 것을 알 수 있습니다.

  2. WebClient에 대해 위에서 수집 한 신원 정보를 사용하십시오.

    헤더 : 모든 수집 된 헤더를 통해 반복하고 그들이 added to the webclient 예를 들어

    쿠키 myWebClient.Headers.Add("Content-Type","application/x-www-form-urlencoded");를 사용하고 있는지 확인하십시오 : this post를 참조하십시오.

+0

나는 이것을 테스트하기 시작했다. 시간이 좀 걸릴거야하지만 내가 어떻게 가는지 알려줄거야. 감사합니다 –

+0

고마워요, –

11

해결책을 찾기 위해 1 주일 만에 인터넷 검색을 시도한 결과 매우 간단했습니다.

나는 HTTPS URL에서 파일을 자동으로 다운로드하고 웹 브라우저 컨트롤을 사용하면됩니다.

1) 웹 브라우저 를 사용하여 로그인하십시오. 2)이 코드를 사용하여 다운로드하십시오.

//build de URL 

    string _url = "https://........." 

    //define a download file name and location 

    string _filename = @"C:\Users\John\Documents\somefile.pdf"; 

    //create a webcliente 

    WebClient cliente = new WebClient(); 

    //do some magic here (pass the webbrowser cokies to the webclient) 

    cliente.Headers.Add(HttpRequestHeader.Cookie, webBrowser1.Document.Cookie); 

    //and just download the file 

    cliente.DownloadFile(_urlpdf, _filename); 

그것은 미래의 참조를 내 문제

+1

고마워요! 나는 실제로 일했다. 날 구해 줬어. –

+0

당신은 내 인생을 coockies로 안전하게했습니다 !! –

관련 문제