阅读文章

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

[日期:2008-02-22] 来源:  作者: [字体: ]

     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, true, true);
   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
  http://www.cnblogs.com/Files/binbin1845/WSTest.rar
  
    


阅读:
录入:blue1000

评论 】 【 推荐 】 【 打印
上一篇:.net框架源代码批量下载器使用方法
下一篇:配置VS2005,通过NetMassDownloader批量下载和使用源代码
相关文章      
本文评论
发表评论


点评: 字数
姓名:

  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款