Imports System.Web Imports System.Web.Services Imports System.Web.Services.Protocols Imports System.Xml Imports System.Data.SqlClient Imports System.Data Imports System.IO Imports System.Security.Permissions Imports System.Web.Services.Description Imports System.CodeDom Imports System.CodeDom.Compiler Imports System.Reflection Friend Class WsProxy _ Friend Shared Function CallWebService(ByVal webServiceAsmxUrl As String, ByVal serviceName As String, ByVal methodName As String, ByVal args As Object()) As Object Dim client As New System.Net.WebClient() ' Connect To the web service Dim stream As System.IO.Stream = client.OpenRead(webServiceAsmxUrl + "?wsdl") ' Now 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 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 = System.Xml.Serialization.CodeGenerationOptions.GenerateProperties ' Initialize a Code-DOM tree into which we will import the service. Dim nmspace As New CodeNamespace() Dim unit1 As New CodeCompileUnit() unit1.Namespaces.Add(nmspace) ' 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 ' If zero then we are good to go ' Generate the proxy code Dim provider1 As CodeDomProvider = CodeDomProvider.CreateProvider("VisualBasic") ' Compile the assembly proxy with the appropriate references Dim assemblyReferences As String() = New String(4) {"System.dll", "System.Web.Services.dll", "System.Web.dll", "System.Xml.dll", "System.Data.dll"} Dim parms As New CompilerParameters(assemblyReferences) Dim results As CompilerResults = provider1.CompileAssemblyFromDom(parms, unit1) ' Check For Errors If results.Errors.Count > 0 Then For Each oops As CompilerError In results.Errors System.Diagnostics.Debug.WriteLine("========Compiler error============") System.Diagnostics.Debug.WriteLine(oops.ErrorText) Next Throw New System.Exception("Compile Error Occured calling webservice. Check Debug ouput window.") 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) Else Return Nothing End If End Function End Class