访问下载的文件而不是页面HTML

时间:2019-05-22 05:51:03

标签: c# http webclient

我有一些连接到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 :(得分:0)

您访问的uri可能是具有自己机制的HTML页面(例如生成实际的下载地址,该地址可能由服务器动态生成并重定向到它,以防止外部链接访问)以访问实际文件。

应该使用CefSharp之类的浏览器后台浏览器核心来运行HTML及其JavaScript来进行导航,也许您可​​能想钩住download事件来处理下载。

答案 1 :(得分:0)

我认为您需要向accept对象添加WebClient标头。

using (var client = new WebClient())
{
  client.Headers[HttpRequestHeader.Accept] = "application/xml;q=1"; 
  string result = webClient.DownloadString(url);
}

答案 2 :(得分:0)

谢谢大家的投入。最后,这是由我们的供应商切换到TLS 1.2引起的。我只需要强制我的代码使用1.2,然后它就可以工作。