I. Method InvokeWebservice
/// <Summary>
/// Call the remote WebService Method Based on the specified information
/// </Summary>
/// <Param name = "url"> http address of WebService </param>
/// <Param name = "namespace"> namespace of the WebService to be called </param>
/// <Param name = "classname"> name of the WebService class to be called (excluding the namespace prefix) </param>
/// <Param name = "methodname"> Method name of the WebService to be called </param>
/// <Param name = "args"> parameter list </param>
/// <Returns> execution result of WebService </returns>
/// <Remarks>
/// If the call fails, an Exception is thrown. During the call, an exception is intercepted as appropriate.
/// Exception information may occur in two places:
/// 1. CompileAssembly fails when a WebService is dynamically constructed.
/// 2. the WebService itself fails to be executed.
/// </Remarks>
/// <Example>
/// <Code>
/// Object obj = InvokeWebservice ("http: // localhost/GSP_WorkflowWebservice/common. asmx "," Genersoft. platform. service. workflow "," Common "," GetToolType ", new object [] {" 1 "});
/// </Code>
/// </Example>
Public static object InvokeWebservice (string url, string @ namespace, string classname, string methodname, object [] args)
{
Try
{
System. Net. WebClient wc = new System. Net. WebClient ();
System. IO. Stream stream = wc. OpenRead (url + "? WSDL ");
System. Web. Services. Description. ServiceDescription sd = System. Web. Services. Description. ServiceDescription. Read (stream );
System. Web. Services. Description. ServiceDescriptionImporter sdi = new System. Web. Services. Description. ServiceDescriptionImporter ();
Sdi. AddServiceDescription (sd ,"","");
System. CodeDom. CodeNamespace cn = new System. CodeDom. CodeNamespace (@ namespace );
System. CodeDom. CodeCompileUnit ccu = new System. CodeDom. CodeCompileUnit ();
Ccu. Namespaces. Add (cn );
Sdi. Import (cn, ccu );
Microsoft. CSharp. CSharpCodeProvider csc = new Microsoft. CSharp. CSharpCodeProvider ();
System. CodeDom. Compiler. ICodeCompiler icc = csc. CreateCompiler ();
System. CodeDom. Compiler. CompilerParameters cplist = new System. CodeDom. Compiler. CompilerParameters ();
Cplist. GenerateExecutable = false;
Cplist. GenerateInMemory = true;
Cplist. ReferencedAssemblies. Add ("System. dll ");
Cplist. ReferencedAssemblies. Add ("System. XML. dll ");
Cplist. ReferencedAssemblies. Add ("System. Web. Services. dll ");
Cplist. ReferencedAssemblies. Add ("System. Data. dll ");
System. CodeDom. Compiler. CompilerResults cr = icc. CompileAssemblyFromDom (cplist, ccu );
If (true = cr. Errors. HasErrors)
{
System. Text. StringBuilder sb = new System. Text. StringBuilder ();
Foreach (System. CodeDom. Compiler. CompilerError ce in cr. Errors)
{
Sb. Append (ce. ToString ());
Sb. Append (System. Environment. NewLine );
}
Throw new Exception (sb. ToString ());
}
System. Reflection. Assembly assembly = cr. CompiledAssembly;
Type t = assembly. GetType (@ namespace + "." + classname, true, true );
Object obj = Activator. CreateInstance (t );
System. Reflection. MethodInfo mi = t. GetMethod (methodname );
Return mi. Invoke (obj, args );
}
Catch (Exception ex)
{
Throw new Exception (ex. InnerException. Message, new Exception (ex. InnerException. StackTrace ));
}
}
Ii. Call
Object [] Object = new object [] {"Sun"}; // defines the object Array
Object aa = InvokeWebservice ("http: // 192.168.1.200: 111", "WebService2", "Service1", "show", Object );
TextBox1.Text = aa. ToString ();