
using System;

using System.IO;

using System.Collections.Generic;

using System.Linq;

using System.Collections;

using System.Web;

using System.Net;

using System.Reflection;

using System.CodeDom;

using System.CodeDom.Compiler;

using System.Web.Services;

using System.Text;

using System.Web.Services.Description;

using System.Web.Services.Protocols;

using System.Xml.Serialization;

using System.Data;

public partial class Default2 : System.Web.UI.Page

{

protected void Page_Load( object sender, EventArgs e)

{

WebClient client = new WebClient();

string url = "http://webservice.webxml.com.cn/WebServices/TrainTimeWebService.asmx?wsdl";

Stream stream = client.OpenRead(url);

ServiceDescription description = ServiceDescription.Read(stream);

ServiceDescriptionImporter importer = new ServiceDescriptionImporter();//创建客户端代理代理类。

importer.ProtocolName = "Soap"; //指定访问协议。

importer.Style = ServiceDescriptionImportStyle.Client; //生成客户端代理。

importer.CodeGenerationOptions = CodeGenerationOptions.GenerateProperties | CodeGenerationOptions.GenerateNewAsync;

importer.AddServiceDescription(description, null, null); //添加WSDL文档。

CodeNamespace nmspace = new CodeNamespace(); //命名空间

nmspace.Name = "webservice";

CodeCompileUnit unit = new CodeCompileUnit();

unit.Namespaces.Add(nmspace);

ServiceDescriptionImportWarnings warning = importer.Import(nmspace, unit);

CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp");

CompilerParameters parameter = new CompilerParameters();

parameter.GenerateExecutable = false;

parameter.OutputAssembly = "MyTest.dll";//输出程序集的名称

parameter.ReferencedAssemblies.Add("System.dll");

parameter.ReferencedAssemblies.Add("System.XML.dll");

parameter.ReferencedAssemblies.Add("System.Web.Services.dll");

parameter.ReferencedAssemblies.Add("System.Data.dll");

CompilerResults result = provider.CompileAssemblyFromDom(parameter, unit);

if (result.Errors.HasErrors)

{

//Response.Write("调用错误");

}

Assembly asm = Assembly.LoadFrom("MyTest.dll");//加载前面生成的程序集

Type t = asm.GetType("webservice.TrainTimeWebService");

object o = Activator.CreateInstance(t);

MethodInfo method = t.GetMethod("getDetailInfoByTrainCode");

object[] paras = { "7008", "" };//这里是获取西安途径宝鸡的火车K591次列车

DataSet item = (DataSet)method.Invoke(o, paras);//返回火车时刻信息

this.ASPxGridView1.DataSource = item.Tables[0];

this.ASPxGridView1.DataBind();

}

}