2017-07-28 198 views
0

我正在尝试使用C#WebClient从以下uri获取csv文件。C#WebClient - 从URI而不是CSV获取HTML

var copUri ="http://obieebr.banrep.gov.co/analytics/saw.dll?Go&Path=%2fshared%2fSeries%20Estad%c3%adsticas_T%2f1.%20IBR%2f1.1.IBR_CSV_XML_ultimos_datos&download_type=csv&NQUser=publico&NQPassword=publico" 
var client = new WebClient(); 
var content = client.DownloadString(copUri); 

当我在我的浏览器中尝试它时,我得到了csv文件,但上面的代码正在返回验证html文件。如何通过这个html响应来获取csv文件?

+0

您是否尝试使用WebClient.DownloadFile()方法? – Redouane

+1

看起来像最初的打击,它设置了一些饼干。您需要使用支持cookie的客户端,访问URI,然后再次访问相同的URI。只有第二次,它会给你CSV。 – Kyle

+0

您正在从Oracle BI中下载报告,这是非常沉重的会话感知,并且像@ Kyle指出的那样在第一个请求中设置了一些会话cookie,例如“ORA_BIPS_LBINFO”和“ORA_BIPS_NQID”。我不熟悉Oracle BI,但也许你可以在https://stackoverflow.com/questions/tagged/obiee中提出这个问题。 –

回答

0

您已通过uri传递授权凭证。

由于未经身份验证的活动,服务器拒绝了您的请求。

+0

URI中的“...&NQUser = publico&NQPassword = publico”部分不足以通过身份验证? – Lshenrik

+0

他们大都应用了令牌基础认证,您应该要求授权令牌。 请先邮寄邮递员,ARC或任何其他客户端应用程序。 –

0

这个问题超出了cookie的意识 - csv是在浏览器中用javascript编译的。通过使用Casperjs来渲染混淆javascript,然后从底层实例获取数据来解决。