我正在开发一个从网站上下载mcx数据的应用程序。如果我
,那就太好了我自己创建一个应用程序并使用它。
网站上有一个datetimepicker,我想以编程方式选择日期
点击go按钮,稍后在excel中查看。当我点击excel上的视图时,它会下载文件
特定日期的数据。你可以看到这个链接并理解我想说的话。
http://www.mcxindia.com/sitepages/bhavcopy.aspx
如果有人能帮助我,我们将非常感激。
感谢Avance。
答案 0 :(得分:4)
using System.Net;
WebClient webClient = new WebClient();
webClient.DownloadFile("http://mysite.com/myfile.txt", @"c:\myfile.txt");
但是如果文件太大,那么你应该使用异步方法 请查看此代码示例http://www.csharp-examples.net/download-files/
答案 1 :(得分:1)
使用WebClient有很多方法可以下载文件
您必须先阅读此内容 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");
答案 2 :(得分: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);
}