Thursday, November 5, 2009

useing web service without webrefrence

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 Occured 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 wndows form or method etc... as 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"

'Paraments 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)

No comments:

Post a Comment