[英]How to Download a file from a website programatically c#
我正在開發一個用於從網站下載mcx數據的應用程序。
我自己創建一個應用程序並使用它。
網站上有一個datetimepicker,我想以編程方式選擇日期
單擊轉到按鈕,然后在excel中查看。當我單擊excel時,它將下載文件
特定日期的數據。 您可以看到此鏈接,並了解我想說的話。
http://www.mcxindia.com/sitepages/bhavcopy.aspx
如果有人可以幫助我,將不勝感激。
非常感謝。
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/
有很多方法可以使用WebClient下載文件
您必須先閱讀此http://msdn.microsoft.com/zh-cn/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");
您需要按照@Peter的說明將數據與客戶請求一起發布到服務器。
這是一個ASP.net頁,因此需要您在回發時發送一些數據才能完成回調。
使用谷歌,我能夠找到這作為概念的證明。
以下是我在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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.