次のコードを使用してSSRSレポートからcsvファイルをダウンロードしようとしています。WebClientを使用してSSRSからCSVファイルをダウンロードする
Const URI As String = "https://blah.blah.com/blah/_layouts/15/ReportServer/RSViewerPage.aspx?rv:RelativeReportUrl=/blah/Production%20Reports/The_File.rdl&rs:format=csv"
Const DESTINATION As String = "C:\MyFile.csv"
Using myWebClient As WebClient = New WebClient()
With myWebClient
.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8")
.Headers.Add("Accept-Encoding", "gzip, deflate, sdch, br")
.Headers.Add("Accept-Language", "en-US,en;q=0.8")
.Headers.Add("Content-Disposition", "attachment; filename=%22The%5FFile.csv%22")
.Headers.Add("Content-Encoding", "gzip")
.Headers.Add("Content-Type", "text/csv")
.Headers.Add("Vary", "Accept-Encoding")
.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36")
.Headers.Add("Upgrade-Insecure-Requests", "1")
.Headers.Add("Referer", URI)
.Headers.Add("Cache-Control", "private")
.Credentials = New NetworkCredential("<my username>", "<my password>")
.DownloadFile(URI, DESTINATION)
End With
End Using
問題は、ダウンロードされるファイルがcsvファイルではないことです。私がテキストエディタで開くと、私が見ているのは何らかのエンコーディングのような "ガベージ"文字が表示されているだけです。 「Accept-Encoding」ヘッダをコメントアウトしてコードを再実行すると、必要なcsvファイルではなく、結果のHTMLページのコードが取得されます。誰でもファイルを正しくダウンロードできますか?ところで、私が追加したヘッダーはすべて必要なのかどうかはわかりません。
Command = Renderの部分を追加しましたが、まだHTMLページの応答を取得しますが、csvファイルは取得しません。 – user2148983
追加しようとしているヘッダーをすべて削除せずに試しましたか?なぜなら、私は毎月これに似た何かを実行するので、これを動かすためにすべてを追加する必要はありません。 –
追加したヘッダーをすべて削除しました(User-Agentは403 Forbiddenエラーを避けるために必要です)、csvファイルではなくHTMLページコードを取得しました。 – user2148983