2012-12-15 79 views
-1

我在我的項目中有一個請求,我需要登錄到外部網站並需要從網站下載文件。除登錄用戶名/密碼外,我沒有任何訪問權限。有什麼方法可以使用C#來實現這個功能。謝謝!導航並從外部網站下載文件

+2

是的有很多種方法。但是你對我們有什麼期望?爲你寫嗎? –

+0

嗨,我不希望你寫代碼,只需要建議如何實現這一目標。在這個需求中,我需要打開銀行網站並使用uname和pwd登錄到網站,然後通過下載文件點擊site.till上的一個按鈕。現在,這是使用基於協調的文本框和按鈕的腳本語言編寫的。但是這並不像我們需要在每次佈局更改時更改腳本那樣高效。 –

回答

0

您可以使用WebBrowser控件和WATIN庫一起瀏覽網站並單擊下載按鈕。

WebBrowser控件有一個 「下載文件」 事件,您可以處理

2

這取決於類型的網站和身份驗證:

1)使用WebClient類

WebClient wc = new WebClient(); 
wc.Credentials = new NetworkCredential(username, password); 
wc.DownloadFile(url, "c:\\"); 

2)如果第一沒有工作,你可以使用WebBrowser控件

HtmlElement ele = webBrowser1.Document.GetElementById("email"); 
if (ele != null) 
    ele.InnerText = "username"; 

ele = webBrowser1.Document.GetElementById("pass"); 
if (ele != null) 
    ele.InnerText = "pass"; 

ele = webBrowser1.Document.GetElementById("Login"); 
if (ele != null) 
    ele.InvokeMember("click"); 
+0

您可以通過[UploadValues](http://msdn.microsoft.com/en-us/library/9w7b4fz7.aspx)通過WebClient發佈數值。另請參閱[如何使用C#中的WebClient將數據發佈到特定的URL](http ://stackoverflow.com/q/5401501/119477) –

+0

Thanq,它的工作。 –

0

實現它如果您可以手動執行此操作,則可以使用C#或任何其他支持HTTP請求的語言以編程方式執行此操作。所有你需要的是:

  1. 找出如何正確認證服務器。完成此操作後,您將獲得身份驗證令牌和與此令牌關聯的會話。然後,您將該令牌附加到服務器的所有後續請求中。

  2. 找出發送哪個請求以獲取該特定資源。我會假設它是一個特定URL的GET請求。如果手動執行,使用Fiddler來檢查發送了哪些請求。