微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

webService动态调用

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();


        }

}
运行效果如下

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐