2011-11-26 69 views
0

我正在開發一個從網站上下載mcx數據的應用程序。如果我自己創建一個應用程序並使用它,它會很好。如何以編程方式從網站下載文件c#

有一個在網站上的DateTimePicker中,我要選擇日期編程

單擊excel.when Go按鈕並且在以後查看我點擊查看Excel的它下載文件

具體日期的數據。你可以看到這個鏈接並理解我想說的話。

http://www.mcxindia.com/sitepages/bhavcopy.aspx

會有很大的升值,如果有人可以幫助我。

Thanks In Avance。

回答

1

您需要您的數據到您的客戶端請求的服務器,由@Peter解釋。

這是一個ASP.net頁面,因此它需要您發送一些回發數據才能完成回調。

使用谷歌,我能夠找到this作爲概念驗證。

以下是我在Linqpad中編寫的代碼片段進行測試。這是它:

void Main() 
{ 

    WebClient webClient = new WebClient(); 



    byte[] b = webClient.DownloadData("http://www.mcxindia.com/sitepages/BhavCopyDateWise.aspx"); 

    string s = System.Text.Encoding.UTF8.GetString(b); 

    var __EVENTVALIDATION = ExtractVariable(s, "__EVENTVALIDATION"); 

    __EVENTVALIDATION.Dump(); 

    var forms = new NameValueCollection(); 

    forms["__EVENTTARGET"] = "btnLink_Excel"; 
    forms["__EVENTARGUMENT"] = ""; 
    forms["__VIEWSTATE"] = ExtractVariable(s, "__VIEWSTATE"); 
    forms["mTbdate"] = "11%2F15%2F2011"; 
    forms["__EVENTVALIDATION"] = __EVENTVALIDATION; 


    webClient.Headers.Set(HttpRequestHeader.ContentType, "application/x-www-form-urlencoded"); 

    var responseData = webClient.UploadValues(@"http://www.mcxindia.com/sitepages/BhavCopyDateWise.aspx", "POST", forms); 
    System.IO.File.WriteAllBytes(@"c:\11152011.csv", responseData); 
} 

private static string ExtractVariable(string s, string valueName) 
{ 
    string tokenStart = valueName + "\" value=\""; 
    string tokenEnd = "\" />"; 

    int start = s.IndexOf(tokenStart) + tokenStart.Length; 
    int length = s.IndexOf(tokenEnd, start) - start; 
    return s.Substring(start, length); 
} 
4
using System.Net; 

WebClient webClient = new WebClient(); 
webClient.DownloadFile("http://mysite.com/myfile.txt", @"c:\myfile.txt"); 

但是,如果文件太大,則應該使用async方法。
檢查該代碼示例http://www.csharp-examples.net/download-files/

+0

它不是一個文本文件我需要插入一些信息並下載它 –

1

有很多是使用方法的WebClient

到DownloadFile你一定要讀這首 http://msdn.microsoft.com/en-us/library/system.net.webclient.aspx

如果你想放一些附加信息,您可以使用WebClient.Headers,

,並使用

using System.Net; 

WebClient webClient = new WebClient(); 
var forms = new NameValueCollection(); 
forms["token"] = "abc123"; 
var responseData = webClient.UploadValues(@"http://blabla.com/download/?name=abc.exe", "POST", forms); 
System.IO.File.WriteAllBytes(@"D:\abc.exe"); 
相關問題