Доступ к загруженному файлу вместо HTML страницы - PullRequest
0 голосов
/ 22 мая 2019

У меня есть код, который подключается к HTTP API и должен получить ответ XML.Когда ссылка API помещается в браузер, браузер загружает XML в виде файла.Однако, когда код подключается к тому же API, возвращается HTML.Я сказал владельцу API, но они не думают, что что-то не так.Есть ли способ захватить загруженный файл вместо HTML?

Я попытался установить заголовки так, чтобы мой код выглядел как браузер.Также попытался использовать WebRequest вместо WebClient.Но ничего не работает.

Вот код, URL работает в браузере (загруженный файл), но не работает для WebClient:

WebClient webClient = new WebClient();
string result = webClient.DownloadString(url);

Код должен каким-то образом получить файл XMLвместо HTML страницы (фактически HTML не отображается в браузере, только в файле).

Ответы [ 3 ]

0 голосов
/ 22 мая 2019

Я думаю, вам нужно добавить заголовок accept к объекту WebClient.

using (var client = new WebClient())
{
  client.Headers[HttpRequestHeader.Accept] = "application/xml;q=1"; 
  string result = webClient.DownloadString(url);
}
0 голосов
/ 22 мая 2019

Спасибо всем за ваш вклад.В конце концов, это было вызвано переключением нашего поставщика на TLS 1.2.Мне просто пришлось заставить мой код использовать 1.2, и тогда он заработал.

0 голосов
/ 22 мая 2019

URI, к которому вы обращаетесь, может быть HTML-страницей, имеющей собственный механизм (например, создание фактического адреса загрузки, который может динамически генерироваться сервером, и перенаправление на него, чтобы предотвратить доступ к внешним ссылкам) для доступа к реальномуfile.

Предполагается использовать фоновое ядро ​​браузера браузера, например CefSharp , чтобы запустить HTML и его JavaScript, чтобы позволить ему перемещаться, и, возможно, вы захотите подключить событие загрузки для обработкизагрузка.

...