Загрузка файла с сайта подписки (страницы PHP) с использованием C # - PullRequest
1 голос
/ 01 декабря 2011

Я разработчик Asp.Net C # и хочу скачать CSV-файл с PHP-сайта. Приносим извинения, если это уже было рассмотрено, но в этом случае Ссылка показывает отправку формы javascript.

Прямо сейчас мы заходим на страницу входа а затем введите дату на странице поиска. Страница результатов отображает результаты в формате HTML, а также содержит ссылку «скачать», которая при нажатии приводит к созданию файла CSV.

Мы хотели бы периодически «извлекать» файл CSV с помощью некоторой очистки экрана / загрузки файла.

Ссылка "скачать" показывает следующий javascript для отправки формы обратно на сервер для загрузки файла CSV:

javascript:document.aForm.action='download.php'; setTarget();document.aForm.submit();

Я хочу настроить консольное приложение C # для периодического запуска: Войдите в систему и загрузите файл CSV.

  1. Могу ли я использовать метод загрузки данных веб-клиента для доступа к этому CSV-файлу? Пример кода, пожалуйста.

  2. Могу ли я выполнить некоторые программные проверки для входа в систему и заполнения некоторых критериев поиска и перейдите на страницу результатов, чтобы загрузить CSV?

Что рекомендуется для этого? html agility pack? любые ссылки или фрагменты кода приветствуются.

Спасибо за любую помощь.

1 Ответ

1 голос
/ 01 декабря 2011

Да, вы можете использовать WebClient класс, а для загрузки файла вы можете использовать WebClient.DownloadFile метод

OR

Вы можете Curl libcurl .net для справки вы можете следить за этой записью

Для входа на определенную страницу вы можете попробовать это

WebClient client = new WebClient();
client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705;)");
byte[] bret = client.UploadData("http://www.website.com/post.php", "POST",
            System.Text.Encoding.ASCII.GetBytes("field1=value1&field2=value2") );

string sret = System.Text.Encoding.ASCII.GetString(bret);

Получив ответ об успешном завершении, вы можете проанализировать строку ответа, чтобы получить эту гиперссылку, а затем использовать Webclient.DownloadFile для загрузки файла

    try
    {
        client.DownloadFile("http://www.xyz.com/download.php","abc.csv");
        Console.WriteLine("File Saved.");
    }
    catch (WebException we)
    {
        Console.WriteLine(we.Message + "\n" + we.Status.ToString());
    }
    catch (NotSupportedException ne)
    {
        Console.WriteLine(ne.Message);
    }

И я предполагаю, что в вашем случае гиперссылка javascript делает сообщение на download.php, поэтому вместо использования webclient.downloadFile вы можете просто сделать сообщение вручную, используя webclient. выше я показал вам, как публиковать сообщения.

...