Click here to Skip to main content
13,356,318 members (62,882 online)
Click here to Skip to main content
Add your own
alternative version

Tagged as


4 bookmarked
Posted 4 Jan 2010

Call Web Service Dynamically

, 17 Jan 2010
Rate this:
Please Sign up or sign in to vote.
:confused::confused::confused:I found a way after searching the web to invoke a webservice thru code without having to set a web reference.

internal class WsProxy { [SecurityPermissionAttribute(SecurityAction.Demand, Unrestricted = true)]
internal static object CallWebService(string webServiceAsmxUrl, string serviceName, string methodName, object[] args)
System.Net.WebClient client = new System.Net.WebClient();
//-Connect To the web service
System.IO.Stream stream = client.OpenRead(webServiceAsmxUrl + "?wsdl");
//--Now read the WSDL file describing a // service.
ServiceDescription description = ServiceDescription.Read(stream);
///// LOAD THE DOM /////////
//--Initialize a service description imp // orter.
ServiceDescriptionImporter importer = new ServiceDescriptionImporter();
importer.ProtocolName = "Soap12"; // Use SOAP 1.2.
importer.AddServiceDescription(description, null, null);
//--Generate a proxy client. importer.Style = ServiceDescriptionImportStyle.Client;
//--Generate properties to represent pri // mitive values.
importer.CodeGenerationOptions = System.Xml.Serialization.CodeGenerationOptions.GenerateProperties;
//--Initialize a Code-DOM tree into whic // h we will import the service.
CodeNamespace nmspace = new CodeNamespace();
CodeCompileUnit unit1 = new CodeCompileUnit();
//--Import the service into the Code-DOM // tree. This creates proxy code
//--that uses the service.
ServiceDescriptionImportWarnings warning = importer.Import(nmspace, unit1);
if (warning == 0) //--If zero then we are good to go
//--Generate the proxy code CodeDomProvider provider1 = CodeDomProvider.CreateProvider("CSharp");
//--Compile the assembly proxy with the // appropriate references
string[] assemblyReferences = new string[5] { "System.dll", "System.Web.Services.dll", "System.Web.dll", "System.Xml.dll", "System.Data.dll" };
CompilerParameters parms = new CompilerParameters(assemblyReferences);
CompilerResults results = provider1.CompileAssemblyFromDom(parms, unit1);
//-Check For Errors
if (results.Errors.Count > 0)
foreach (CompilerError oops in results.Errors)
System.Diagnostics.Debug.WriteLine("========Compiler error============");
throw new System.Exception("Compile Error Occured calling webservice. Check Debug ouput window.");
//--Finally, Invoke the web service meth // od object wsvcClass = results.CompiledAssembly.CreateInstance(serviceName);
MethodInfo mi = wsvcClass.GetType().GetMethod(methodName);
return mi.Invoke(wsvcClass, args);
return null;


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


About the Author

You may also be interested in...


Comments and Discussions

GeneralGreat Post.. Pin
switchez8-Sep-13 21:57
memberswitchez8-Sep-13 21:57 
Generalsmiley's Pin
Bassam Saoud19-Jan-10 13:34
memberBassam Saoud19-Jan-10 13:34 

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
Web04 | 2.8.180111.1 | Last Updated 17 Jan 2010
Article Copyright 2010 by Aman Bhullar
Everything else Copyright © CodeProject, 1999-2018
Layout: fixed | fluid