Загрузите файл из WebForm, используя C #

1

Мне нужно загрузить файл с веб-сайта (не написанный мной). У меня есть действительное имя пользователя/пароль для доступа к нему, и я могу сделать это вручную. Но я хочу создать автоматическую процедуру (в С#) для ее периодической загрузки.

Вручную мне нужно войти в систему, перейти на страницу загрузки, выбрать комбо-поле и нажать "Загрузить". Эта ссылка выполняет обратную передачу и возвращает запрошенный файл.

Я думаю, что я должен использовать WebClient.DownloadFile, но я не могу понять, как передать все необходимые данные и запросить обратную передачу правильно.

  • 1
    На ваш вопрос нельзя ответить (как вы можете использовать) в текущей форме. Вам необходимо объяснить, какой тип аутентификации используется на сайте (например, OAuth) и как вы получаете URL-адрес файла.
  • 0
    Размещенный мною код поможет вам скачать, но есть много данных, которые вы до сих пор не предоставили.
Показать ещё 2 комментария
Теги:

2 ответа

3

У этого другого веб-сайта есть API?

В противном случае вам нужно будет сделать веб-запрос, отправив все детали в нужном формате, затем прочитайте ответ, затем автоматически заполните вторую форму, чтобы "проверить комбо-поле", а затем, наконец, прочитайте ответ, содержащий файл,

Кроме того, там есть программное обеспечение эмуляции браузера, такое как селен, который используется для тестирования веб-сайта. Вы могли бы установить там тест/скрипт, который сделает все вышеперечисленное для вас. Я не уверен, как это обрабатывает загруженные файлы.

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

Для удобства, сохраненный пароль в веб-браузере не спасет вас от большинства проблем?

  • 0
    К сожалению, нет, мне приходится периодически скачивать файлы, и каждый раз это будут десятки файлов. И каждый файл должен идти в другое место и получать различные разработки. Я бы потребовал слишком много времени, чтобы сделать это вручную.
  • 0
    Хорошо, ИМХО, тогда вам нужно будет эмулировать веб-браузер. Мой первый вопрос: нужно ли вам каждый раз выбирать разные значения из поля со списком, так как это может испортить вашу программу, если вы это сделаете ...
Показать ещё 1 комментарий
0

Вы бы сделали что-то вроде этого:

HttpWebRequest request = WebRequest.Create(@"http://stackoverflow.com") as HttpWebRequest;
request.Credentials = NetworkCredentials(@"username", @"password");
request.Timeout = 300;

if(string.IsNullOrEmpty(request))
     throw new Exception("Error in Request");

using(var stream = request.GetResponse().GetResponseStream())
     using(var writer = File.Create(Environment.GetFolderPath(Environment.SpecialFolder.Desktop))
          stream.CopyTo(writer);

Вы должны использовать NetworkCredentials для передачи их на сайт. После создания HttpWebRequest вы сможете получить доступ к множеству функций.

  • 0
    Спасибо, я понимаю о полномочиях, но я не знаю, как вызвать обратную передачу. Если я создам поток с URL, у меня будет HTML-форма, но я хочу файл. (Извините за мой английский)
  • 1
    Примечание: это вряд ли поможет OP, так как большинство сайтов (например, SO в вашем примере) используют OAuth или аутентификацию на основе форм ...
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню