Call a Web Method from a Web API Client

For guidance about how to create a project for these steps, see Create a Project from Web API Client Template.

  1. Adjust the stubbed-out constants.

  2. Assign a value to the Credentials property for the instance of AppFxWebServiceProvider.

  3. Create a client app info header to use with each request.

            Dim cai As Blackbaud.AppFx.WebAPI.ServiceProxy.ClientAppInfoHeader = _
                provider.CreateClientAppInfoRequestHeader()
            cai.REDatabaseToUse = "BBInfinity"
            cai.ClientAppName = "ExampleClient"
            'SessionKey to be returned after the first request
            cai.TimeOutSeconds = 120
            cai.RunAsUserID = New Guid("00000000-0000-0000-0000-000000000000")
  4. Create a request to start a session, make the request, and assign the returned value to a session start reply.

            Dim startRequest As Blackbaud.AppFx.WebAPI.ServiceProxy.SessionStartRequest = _
                New Blackbaud.AppFx.WebAPI.ServiceProxy.SessionStartRequest()
            startRequest.ClientAppInfo = cai
            Dim startReply As Blackbaud.AppFx.WebAPI.ServiceProxy.SessionStartReply = _
                provider.Service.SessionStart(startRequest)
            MsgBox("Session key: " + startReply.SessionKey)

  5. Add the session key to the client app info header.

            cai.SessionKey = startReply.SessionKey
  6. Create a Guid for the data form instance ID.

            Dim addFormGuid As Guid = New Guid("1f9671b3-6740-447c-ad15-ef2718c0e43a")
  7. Create a data form load request, make the request, and assign the returned value to a data form load reply.

            Dim loadRequest As Blackbaud.AppFx.WebAPI.ServiceProxy.DataFormLoadRequest = _
                provider.CreateRequest(Of Blackbaud.AppFx.WebAPI.ServiceProxy.DataFormLoadRequest)()
            loadRequest.ClientAppInfo = cai
            loadRequest.FormID = addFormGuid
            loadRequest.IncludeMetaData = True
            Dim loadReply As Blackbaud.AppFx.WebAPI.ServiceProxy.DataFormLoadReply = _
                provider.Service.DataFormLoad(loadRequest)
            MsgBox("Loaded form with form header: " + loadReply.MetaData.FormHeader)

  8. Create a data form item for a data form save request.

            Dim dfi As Blackbaud.AppFx.XmlTypes.DataForms.DataFormItem = _
                New Blackbaud.AppFx.XmlTypes.DataForms.DataFormItem()
            dfi.SetValue("FIRSTNAME", "John")
            dfi.SetValue("LASTNAME", "Smith2")
  9. Create a data form save request, make the request, and assign the returned value to a data form save reply.

            Dim saveRequest As Blackbaud.AppFx.WebAPI.ServiceProxy.DataFormSaveRequest = _
                provider.CreateRequest(Of Blackbaud.AppFx.WebAPI.ServiceProxy.DataFormSaveRequest)()
            saveRequest.ClientAppInfo = cai
            'To demonstrate using the load reply.
            saveRequest.FormID = loadReply.FormID
            saveRequest.DataFormItem = dfi
            Dim saveReply As Blackbaud.AppFx.WebAPI.ServiceProxy.DataFormSaveReply = _
                provider.Service.DataFormSave(saveRequest)
            MsgBox("New record ID: " + saveReply.ID)
  10. Create a request to end the session, make the request, and assign the returned value to a session end reply.

            Dim endRequest As Blackbaud.AppFx.WebAPI.ServiceProxy.SessionEndRequest = _
                New Blackbaud.AppFx.WebAPI.ServiceProxy.SessionEndRequest
            endRequest.ClientAppInfo = cai
            Dim endReply As Blackbaud.AppFx.WebAPI.ServiceProxy.SessionEndReply = _
                provider.Service.SessionEnd(endRequest)