我需要從網站下載文件(不是由我寫的)。 我有一個有效的用戶名/密碼來訪問它,我可以手動。 但我想創建一個自動化過程(在C#中)定期下載它。使用C#從WebForm下載文件
手動我必須登錄,瀏覽到下載頁面,選擇一些組合框,然後單擊「下載」。 此鏈接執行回發並返回請求的文件。
我想我應該使用WebClient.DownloadFile,但我無法弄清楚如何傳遞所有必要的數據並請求回發正確的方式。
我需要從網站下載文件(不是由我寫的)。 我有一個有效的用戶名/密碼來訪問它,我可以手動。 但我想創建一個自動化過程(在C#中)定期下載它。使用C#從WebForm下載文件
手動我必須登錄,瀏覽到下載頁面,選擇一些組合框,然後單擊「下載」。 此鏈接執行回發並返回請求的文件。
我想我應該使用WebClient.DownloadFile,但我無法弄清楚如何傳遞所有必要的數據並請求回發正確的方式。
你會做這樣的事情:
HttpWebRequest request = WebRequest.Create(@"http://stackoverflow.com") as HttpWebRequest;
request.Credentials = NetworkCredentials(@"username", @"password");
request.Timeout = 300;
if(string.IsNullOrEmpty(request))
throw new Exception("Error in Request");
using(var stream = request.GetResponse().GetResponseStream())
using(var writer = File.Create(Environment.GetFolderPath(Environment.SpecialFolder.Desktop))
stream.CopyTo(writer);
你會使用NetworkCredentials
到這些信息傳遞給一個網站。一旦你創建了HttpWebRequest
,你將能夠訪問很多功能。
這個其他網站有API嗎?
否則,你將不得不做一個web請求,以他們需要的格式提交所有細節,然後讀取響應,然後自動填寫第二個表單以「檢查某個組合框」,然後最後閱讀包含該文件的響應。
此外,還有瀏覽器仿真軟件,如硒,用於網站測試。你可以在那裏設置一個測試/腳本,它會爲你做上述所有的事情。我不確定如何處理下載的文件。
如果您想要執行路線1,請準備在每次其他網站更改時更改您的程序。如果他們添加一個驗證碼,那麼你幾乎搞砸了。
爲了方便起見,在Web瀏覽器中存儲的密碼不會爲您節省大部分麻煩?
不幸的是,我不得不定期下載文件,每次都會有數十個文件。每個文件都必須到不同的位置並接受不同的闡述。我需要太多的時間手動完成。 – WaveMax 2014-10-10 15:07:03
好吧,恕我直言,你需要做的是模擬一個網頁瀏覽器。我的第一個問題是,你是否必須每次都從組合框中選擇不同的值,因爲如果你這樣做的話,你的程序會變得很糟糕... – Del 2014-10-10 16:02:58
不幸的是,我必須每次從組合框中選擇不同的值。我的夢想是通過網絡憑證和所有數據通過查詢字符串請求一個Url,並將一個文件作爲響應,但似乎它不能以這種方式工作。其實web服務會更加讚賞... – WaveMax 2014-10-13 09:33:41
您的問題無法在當前表單中回答(您可以使用的方式)。您需要說明網站上使用的認證類型(即OAuth)以及如何獲取文件的URL。 – 2014-10-10 14:47:09
我發佈的代碼將幫助您下載,但仍有大量數據仍未提供。 – Greg 2014-10-10 14:51:05
您可以使用[Watin](http://watin.org/)或任何其他Web自動化API。 – Bolu 2014-10-10 14:54:37