Handling Drill-downs, Active Cache, and On-Demand Paging Reports

In this section:

This section provides code examples that demonstrate how to run an On-Demand Paging report called ODP_Report.fex, which resides in the RESTful_Web_Services/Car_Reports folder.

The examples include:

The WebForm2 page can also be used as is to handle Drill-down and Active Cache paging requests.

The signOn page contains the RESTful Web Service request to run the initial WebFOCUS report. The IBIRS_clientPath parameter is set so that all additional RESTful Web Services requests needed, whether paging, image retrieval, or paging will be routed through the client application. For example:

IBIRS_clientPath=http://localhost:51970/WebForm2.aspx

Top of page

x
Visual Basic .NET Example (signOn.aspx)
Imports System.Net
Imports System.IO
Public Class signOn
    Inherits System.Web.UI.Page
    Dim cookies As New CookieContainer
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim webStream As Stream
        Dim webResponse As String = ""
        Dim request As HttpWebRequest
        Dim response1 As HttpWebResponse
        Dim postData As String
        request = WebRequest.Create("http://localhost.:8080/ibi_apps/rs/ibfs")
        
request.Method = "POST"
        postData = "IBIRS_action=signOn&IBIRS_userName=admin&IBIRS_password=admin"
        request.CookieContainer = cookies
        Dim byteArray As Byte() = Encoding.UTF8.GetBytes(postData)
        request.ContentType = "application/x-www-form-urlencoded"
        request.ContentLength = byteArray.Length
        Dim dataStream As Stream = request.GetRequestStream()
        dataStream.Write(byteArray, 0, byteArray.Length)
        dataStream.Close()
        response1 = request.GetResponse()
        webStream = response1.GetResponseStream()
        Dim request2 As HttpWebRequest
        Dim response2 As HttpWebResponse
        Dim webStream2 As Stream
        Dim webResponse2 As String = ""
        Dim uri As New System.Uri("http://localhost.:8080/ibi_apps/rs")
        
        request2 = WebRequest.Create(uri)
        request2.Method = "POST"
        request2.CookieContainer = cookies
        postData = "IBIRS_action=run" + _
                   "&IBIRS_clientPath=http://localhost:51970/WebForm2.aspx" + _
"&IBIRS_path=/WFC/Repository/RESTful_Web_Services/Car_Reports/ODP_Report.fex" + _
                   "&IBIRS_service=ibfs" + _
                   "&IBIRS_htmlPath=http://localhost:8080/ibi_apps/ibi_html"        
        
Dim byteArray2 As Byte() = Encoding.UTF8.GetBytes(postData)
        request2.ContentType = "application/x-www-form-urlencoded"
        request2.ContentLength = byteArray2.Length
        Dim dataStream2 As Stream = request2.GetRequestStream()
        dataStream2.Write(byteArray2, 0, byteArray2.Length)
        dataStream2.Close()
        response2 = request2.GetResponse()
        Dim i As Integer
        Dim cookieArray As New CookieCollection
        cookieArray = cookies.GetCookies(uri)
        For i = 0 To cookies.Count - 1
            Dim aCookie As New HttpCookie(cookieArray(i).Name)
            aCookie.Value = cookieArray(i).Value
            Response.Cookies.Add(aCookie)
        Next i
        webStream2 = response2.GetResponseStream()
        Dim webStreamReader2 As New StreamReader(webStream2)
        While webStreamReader2.Peek >= 0
            webResponse2 = webStreamReader2.ReadToEnd()
        End While
        Response.Output.Write(webResponse2)
    End Sub
End Class

Top of page

x
Visual Basic .NET Example (WebForm2.aspx)
Imports System.Net
Imports System.IO
Public Class WebForm2
    Inherits System.Web.UI.Page
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim tDrillURL As String = ""
        Dim i As Integer
        Dim qParm As String
        Dim qValue As String
        Dim IBIRS_path As String = ""
        Dim Clicked_On As String = ""
        Dim cookies As New CookieContainer
        If Request.QueryString.AllKeys.Length = 0 Then
            For i = 0 To Request.Form.AllKeys.Length - 1
                qValue = Request.Form(Request.Form.AllKeys(i))
                If i = 0 Then
                    tDrillURL = tDrillURL + Request.Form.AllKeys(i) + "=" + qValue
                Else
                    tDrillURL = tDrillURL + "&" + Request.Form.AllKeys(i) + "=" + qValue
                End If
            Next i
        Else
            For i = 0 To Request.QueryString.AllKeys.Length - 1
                qParm = Request.QueryString.AllKeys(i)
                qValue = Request.QueryString(Request.QueryString.AllKeys(i))
                If i = 0 Then
                    If Request.QueryString.AllKeys(i) <> Nothing Then
                        tDrillURL = tDrillURL + Request.QueryString.AllKeys(i) + "=" + qValue
                    End If
                Else
                    tDrillURL = tDrillURL + "&" + Request.QueryString.AllKeys(i) + "=" + qValue
                End If
            Next i
        End If
        Dim request3 As HttpWebRequest
        Dim response3 As HttpWebResponse
        Dim webStream3 As Stream
        Dim webResponse3 As String = ""
        Dim getData As String
        Dim uris As String = "http://localhost.:8080/ibi_apps/rs/ibfs"
        Dim uri As New System.Uri(uris)
        
getData = "http://localhost.:8080/ibi_apps/rs/ibfs?" + _
                  tDrillURL + _
                  "&IBIRS_clientPath=http://localhost:51970/WebForm2.aspx" + _
                  "&IBIRS_htmlPath=http://localhost:8080/ibi_apps/ibi_html"        
request3 = WebRequest.Create(getData)
        request3.Method = "GET"
 
        Dim j As Integer
        For j = 0 To Request.Cookies.Count - 1
            Dim rCookie As New System.Net.Cookie
            rCookie.Name = Request.Cookies(j).Name
            rCookie.Value = Request.Cookies(j).Value
            cookies.Add(uri, rCookie)
            Dim aCookie As New HttpCookie(Request.Cookies(j).Name)
            aCookie.Value = Request.Cookies(j).Value
            Response.Cookies.Add(aCookie)
        Next j
        request3.CookieContainer = cookies
        response3 = request3.GetResponse()
        webStream3 = response3.GetResponseStream()
        Dim binaryReader3 As New BinaryReader(webStream3)
        Dim readData() As Byte = Nothing
        Dim byteArray() As Byte = Nothing
        Dim byteStart As Integer = 0
        Dim byteLength As Integer
        While (True)
            readData = binaryReader3.ReadBytes(4096)
            If (readData.Length = 0) Then
                Exit While
            End If
            byteLength = readData.Length
            ReDim Preserve byteArray(byteLength + byteStart - 1)
            Array.Copy(readData, 0, byteArray, byteStart, byteLength)
            byteStart = byteStart + byteLength
        End While
        Response.OutputStream.Write(byteArray, 0, byteArray.Length)
        
    End Sub
End Class

WebFOCUS