2017-07-28 55 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,然後從底層實例獲取數據來解決。