I've been looking into achieving this capability with minimum amount of code for sometime; Using URL access in sQL Server Reporting Services to render the file in browser without having a save as popup nor using the Report Viewer Control. Just a plain old binary data streaming into broswer IOStream. I tried WebClient but it didn't work very well; For fine grained control on timing, since report generation could take longer, HTTPWebRequest and HTTPWebResponse are probably the best bet here.
Dim ReportUrl As String = "http://
Dim ReportWebRequest As HttpWebRequest = CType(WebRequest.Create(ReportUrl), HttpWebRequest)
ReportWebRequest.Timeout = 10000
ReportWebRequest.Credentials = CredentialCache.DefaultCredentials
Dim ReportWebResponse As HttpWebResponse = CType(ReportWebRequest.GetResponse(), HttpWebResponse)
Dim ReportResponseStream As StreamReader = New StreamReader(ReportWebResponse.GetResponseStream(), New UnicodeEncoding)
Dim objMemoryStream As New MemoryStream(New UnicodeEncoding().GetBytes(ReportResponseStream.ReadToEnd()))
Response.Clear()
Response.AddHeader("Accept-Header", objMemoryStream.Length.ToString())
Response.ContentType = "application/pdf"
Response.OutputStream.Write(objMemoryStream.ToArray(), 0, Convert.ToInt32(objMemoryStream.Length))ReportResponseStream.Close()
Response.Flush()
Try
Response.End()
Catch
End Try
Partnersuche
Thanks much! This worked great for me. As I was getting these PDFs 'scraped' from another web site, I also added code to cache these in a local database and only retrieve the Http Stream from the site if I lacked it in the SQL database.
I appreciate you taking the time to provide this code. It worked the first time for me.
Kind Regards,
Damon Carr