【问题标题】:C# WebClient - Getting an HTML from URI instead of CSVC# WebClient - 从 URI 而不是 CSV 获取 HTML
【发布时间】:2017-07-28 17:53:42
【问题描述】:

我正在尝试使用 C# WebClient 从以下 uri 获取 csv 文件。

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 文件?

【问题讨论】:

  • 您是否尝试过使用 WebClient.DownloadFile() 方法?
  • 看起来在初始命中时,它设置了一些 cookie。您将需要使用可识别 cookie 的客户端,访问 URI,然后再次访问相同的 URI。只有第二次,它才会给你 CSV。
  • 您正在从 Oracle BI 下载报告,该报告具有非常重的会话意识,并且就像 @Kyle 指出的那样,在第一个请求时设置了一些会话 cookie,例如 ORA_BIPS_LBINFOORA_BIPS_NQID。我对Oracle BI不熟悉,但也许你可以在stackoverflow.com/questions/tagged/obiee问这个问题。
  • 尝试使用以下cookie-aware webclient (stackoverflow.com/questions/2825377/…),但问题依然存在..

标签: c# csv webclient obiee


【解决方案1】:

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

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

【讨论】:

  • URI 中的“...&NQUser=publico&NQPassword=publico”部分不足以通过身份验证?
  • 他们已经应用了基于令牌的身份验证,您应该需要令牌进行授权。请先在邮递员、ARC 或任何其他客户端应用程序中尝试。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-25
    • 1970-01-01
    • 2017-12-12
    • 2016-10-28
    • 2011-12-31
    • 2012-07-03
    相关资源
    最近更新 更多