现在的位置: 首页 > 综合 > 正文

Web Service测试小工具(包含源代码)

2012年09月23日 ⁄ 综合 ⁄ 共 2984字 ⁄ 字号 评论关闭

Web Service相信大家都很熟悉,当多个系统间的交互非常频繁的时候,开发过程中总是需要对web service进行测试,确保web service能正常运行。常用的方法是输入web service地址进行测试,但是webservice经常会部署在其他的机器上,不能进行直接测试,只能通过编写测试代码进行测试了,这样感觉非常繁琐。这里我们可以通过动态调用web service来进行测试。

动态调用web service方法

public static object InvokeWebService(string url, string methodname, object[] args)
        
{
            
try
            
{
                
string @namespace = "WebService.DynamicWebCalling";
                
string[] parts = url.Split('/');
                
string[] pps = parts[parts.Length - 1].Split('.');
                
string classname = pps[0];
                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, truetrue);
                
object obj = Activator.CreateInstance(t);
                System.Reflection.MethodInfo mi 
= t.GetMethod(methodname);
                
return mi.Invoke(obj, args);
            }

            
catch (Exception ex)
            
{
                
throw ex;
            }

        }

程序运行界面

源代码下载
/Files/binbin1845/WSTest.rar

抱歉!评论已关闭.