WebBrowser Control download file in session

后端 未结 2 860
情歌与酒
情歌与酒 2021-02-09 11:07

I\'m using WebBrowser control to navigate through a login page and download a file. Since I can\'t find a way to manage the download automatically with the control

相关标签:
2条回答
  • 2021-02-09 11:53

    It should be simply a matter of emulating the cookies and headers in the WebBrowser session and re-using them to impersonate the session in WebClient, but it looks like you're already hot on that path.

    Here's how I'd proceed.

    1. Get cookies and headers from WebBrowser.

      Cookies: You can get the cookies from your WebBrowser session by handling the DocumentCompleted event of the WebBrowser control and parsing the cookie set from DocumentCompleted event.

      Headers: Use a proxy like Fiddler [www.fiddler2.com/] to read the headers so you'll know what's required by the server.

    2. Utilize identity collected above for WebClient.

      Headers: Iterate through all your collected headers and be sure they are added to the webclient using myWebClient.Headers.Add("Content-Type","application/x-www-form-urlencoded"); for example

      Cookies: See this post.

    0 讨论(0)
  • 2021-02-09 11:57

    After one week googling a trying for a solution I found one that is so simple!

    I you what to silently download a file in an HTTPS URL and a webbrowser control just do this.

    1) Log in using the webbrowser 2) use this code to download.

    //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);
    

    It solved my problem

    0 讨论(0)
提交回复
热议问题