webService动态调用_休闲using System;
webService动态调用_休闲using System.IO;
webService动态调用_休闲using System.Collections.Generic;
webService动态调用_休闲using System.Linq;
webService动态调用_休闲using System.Collections;
webService动态调用_休闲using System.Web;
webService动态调用_休闲using System.Net;
webService动态调用_休闲using System.Reflection;
webService动态调用_休闲using System.CodeDom;
webService动态调用_休闲using System.CodeDom.Compiler;
webService动态调用_休闲using System.Web.Services;
webService动态调用_休闲using System.Text;
webService动态调用_休闲using System.Web.Services.Description;
webService动态调用_休闲using System.Web.Services.Protocols;
webService动态调用_休闲using System.Xml.Serialization;
webService动态调用_休闲using System.Data;
webService动态调用_休闲
webService动态调用_休闲public partial class Default2 : System.Web.UI.Page
webService动态调用_休闲{
webService动态调用_休闲        protected void Page_Load(object sender, EventArgs e)
webService动态调用_休闲        {
webService动态调用_休闲                WebClient client = new WebClient();
webService动态调用_休闲                string url = "http://webservice.webxml.com.cn/WebServices/TrainTimeWebService.asmx?wsdl";
webService动态调用_休闲                Stream stream = client.OpenRead(url);
webService动态调用_休闲                ServiceDescription description = ServiceDescription.Read(stream);
webService动态调用_休闲                ServiceDescriptionImporter importer = new ServiceDescriptionImporter();//创建客户端代理代理类。
webService动态调用_休闲                importer.ProtocolName = "Soap"; //指定访问协议。
webService动态调用_休闲                importer.Style = ServiceDescriptionImportStyle.Client; //生成客户端代理。
webService动态调用_休闲                importer.CodeGenerationOptions = CodeGenerationOptions.GenerateProperties | CodeGenerationOptions.GenerateNewAsync;
webService动态调用_休闲                importer.AddServiceDescription(description, null, null); //添加WSDL文档。
webService动态调用_休闲                CodeNamespace nmspace = new CodeNamespace(); //命名空间
webService动态调用_休闲                nmspace.Name = "webservice";
webService动态调用_休闲                CodeCompileUnit unit = new CodeCompileUnit();
webService动态调用_休闲                unit.Namespaces.Add(nmspace);
webService动态调用_休闲                ServiceDescriptionImportWarnings warning = importer.Import(nmspace, unit);
webService动态调用_休闲                CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp");
webService动态调用_休闲                CompilerParameters parameter = new CompilerParameters();
webService动态调用_休闲                parameter.GenerateExecutable = false;
webService动态调用_休闲                parameter.OutputAssembly = "MyTest.dll";//输出程序集的名称
webService动态调用_休闲                parameter.ReferencedAssemblies.Add("System.dll");
webService动态调用_休闲                parameter.ReferencedAssemblies.Add("System.XML.dll");
webService动态调用_休闲                parameter.ReferencedAssemblies.Add("System.Web.Services.dll");
webService动态调用_休闲                parameter.ReferencedAssemblies.Add("System.Data.dll");
webService动态调用_休闲                CompilerResults result = provider.CompileAssemblyFromDom(parameter, unit);
webService动态调用_休闲                if (result.Errors.HasErrors)
webService动态调用_休闲                {
webService动态调用_休闲                        //Response.Write("调用错误");
webService动态调用_休闲                }
webService动态调用_休闲                Assembly asm = Assembly.LoadFrom("MyTest.dll");//加载前面生成的程序集
webService动态调用_休闲                Type t = asm.GetType("webservice.TrainTimeWebService");
webService动态调用_休闲                object o = Activator.CreateInstance(t);
webService动态调用_休闲                MethodInfo method = t.GetMethod("getDetailInfoByTrainCode");
webService动态调用_休闲                object[] paras = { "7008", "" };//这里是获取西安途径宝鸡的火车K591次列车
webService动态调用_休闲                DataSet item = (DataSet)method.Invoke(o, paras);//返回火车时刻信息
webService动态调用_休闲                this.ASPxGridView1.DataSource = item.Tables[0];
webService动态调用_休闲                this.ASPxGridView1.DataBind();
webService动态调用_休闲
webService动态调用_休闲        }
webService动态调用_休闲}
运行效果如下