Как скачать файл с сайта программно c # - PullRequest
0 голосов
/ 26 ноября 2011

Я занимаюсь разработкой приложения для загрузки mcx-данных с веб-сайта. Было бы хорошо, если бы я

сам создал приложение и использовал его.

На веб-сайте есть средство выбора даты и времени вкоторый я хочу выбрать дату программно

, нажмите кнопку «Перейти» и позже просмотрите в Excel. Когда я нажимаю «Просмотреть» в Excel, он загружает файл

данных определенной даты.Вы можете увидеть эту ссылку и понять, что я хочу сказать.

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

Буду очень признателен, если кто-нибудь сможет мне помочь.

Спасибо в Avance.

Ответы [ 3 ]

4 голосов
/ 26 ноября 2011
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 голос
/ 26 ноября 2011

Вам нужно отправить ваши данные на сервер с вашим клиентским запросом, как объясняет @Peter.

Это страница ASP.net, и поэтому для ее выполнения требуется отправить некоторые данные при обратной передаче.

Используя Google, я смог найти этот в качестве доказательства концепции.

Ниже приведен фрагмент кода, который я написал в 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);
}
1 голос
/ 26 ноября 2011

Существует множество способов загрузки файлов с использованием 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");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...