Click here to Skip to main content
13,556,447 members
Click here to Skip to main content
Add your own
alternative version


17 bookmarked
Posted 11 Sep 2009
Licenced CPOL

Call a Web Service Without Adding a Web Reference

, 11 Sep 2009
Rate this:
Please Sign up or sign in to vote.
Calling a Web Service without adding a web reference


A client requested that for some reason he cannot add a Web Reference and wanted to specify the web service URL in web.config or hardcode it. Hence, my first article:)


I did create this source more than a year ago. I used the internet to get information/ideas regarding this.

I am copying from my blog.

Using the Code

  1. Create a class as with "DynamicWebService" and new method "CallWebService".
  2. Create an object of this class and call method "CallWebService" with web service URL and other parameters:
Imports System.CodeDom
Imports System.CodeDom.Compiler
Imports System.Security.Permissions
Imports System.Web.Services.Description
Imports System.Reflection

Public Function CallWebService(ByVal webServiceAsmxUrl As String, _
       ByVal serviceName As String, ByVal methodName As String, _
       ByVal args() As Object) As Object

    Dim client As System.Net.WebClient = New System.Net.WebClient()

    '-Connect To the web service
    Dim stream As System.IO.Stream = _
        client.OpenRead(webServiceAsmxUrl + "?wsdl")

    'Read the WSDL file describing a service.
    Dim description As ServiceDescription = ServiceDescription.Read(stream)

    'LOAD THE DOM'''''''''''''''''''''''''''

    '--Initialize a service description importer.
    Dim importer As ServiceDescriptionImporter = New ServiceDescriptionImporter()
    importer.ProtocolName = "Soap12" ' Use SOAP 1.2.
    importer.AddServiceDescription(description, Nothing, Nothing)

    '--Generate a proxy client. 

    importer.Style = ServiceDescriptionImportStyle.Client
    '--Generate properties to represent primitive values.
    importer.CodeGenerationOptions = _

    'Initialize a Code-DOM tree into which we will import the service.
    Dim nmspace As CodeNamespace = New CodeNamespace()
    Dim unit1 As CodeCompileUnit = New CodeCompileUnit()

    'Import the service into the Code-DOM tree. 
    'This creates proxy code that uses the service.

    Dim warning As ServiceDescriptionImportWarnings = _
                   importer.Import(nmspace, unit1)

    If warning = 0 Then

            '--Generate the proxy code
            Dim provider1 As CodeDomProvider = _
            '--Compile the assembly proxy with the // appropriate references
            Dim assemblyReferences() As String
            assemblyReferences = New String() {"System.dll", _
                "System.Web.Services.dll", "System.Web.dll", _
                "System.Xml.dll", "System.Data.dll"}
        	Dim parms As CompilerParameters = New CompilerParameters(assemblyReferences)
	parms.GenerateInMemory = True '(Thanks for this line nikolas)
        	Dim results As CompilerResults = provider1.CompileAssemblyFromDom(parms, unit1)

        '-Check For Errors
        If results.Errors.Count > 0 Then

            Dim oops As CompilerError
            For Each oops In results.Errors
                System.Diagnostics.Debug.WriteLine("========Compiler error============")
            Throw New System.Exception("Compile Error Occurred calling webservice.")
        End If

        '--Finally, Invoke the web service method
        Dim wsvcClass As Object = results.CompiledAssembly.CreateInstance(serviceName)
        Dim mi As MethodInfo = wsvcClass.GetType().GetMethod(methodName)
        Return mi.Invoke(wsvcClass, args)

        Return Nothing
    End If

    Catch ex As Exception
    Throw ex
    End Try
End Function


Call this web service in a Webform or windows form or method, etc... as shown below:

Dim WebserviceUrl As String = _

'specify service name
Dim serviceName As String = "SecurityAndSessionManagement"

'specify method name to be called
Dim methodName As String = "Session_Start"

'Arguments passed to the method
Dim arArguments(1) As String
arArguments(0) = "abc"
arArguments(1) = "xxxx"

Dim objCallWS As New DynamicWebService
sSessionID = objCallWS.CallWebService(WebserviceUrl, serviceName, _
                                      methodName, arArguments)
MsgBox("new SessionID: " & sSessionID)


  • 11th September, 2009: Initial post


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

United Kingdom United Kingdom
No Biography provided

You may also be interested in...


Comments and Discussions

GeneralMy vote of 1 Pin
Dave Kreskowiak11-Sep-09 6:41
mvpDave Kreskowiak11-Sep-09 6:41 
GeneralRe: My vote of 1 Pin 22:11 22:11 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web03-2016 | 2.8.180515.1 | Last Updated 11 Sep 2009
Article Copyright 2009 by askaslam
Everything else Copyright © CodeProject, 1999-2018
Layout: fixed | fluid