国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

csharp: get Web.Services WebMethod

2019-11-17 02:18:06
字體:
來源:轉載
供稿:網友

csharp: get Web.Services WebMethod

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Services.Description;using System.Web.Services.PRotocols;using System.Web.Services.Discovery;using System.Web.Services;using System.Net;using System.IO;using System.CodeDom;using System.CodeDom.Compiler;using Microsoft.CSharp;using System.Reflection;using System.Text;namespace WebServerProjectDemo{    /// <summary>    ///     /// </summary>    public class WebServiceHelper    {        #region InvokeWebService        /// <summary>        ///         /// </summary>        /// <param name="url"></param>        /// <param name="methodname"></param>        /// <param name="args"></param>        /// <returns></returns>        public static object InvokeWebService(string url, string methodname, object[] args)        {            return WebServiceHelper.InvokeWebService(url, null, methodname, args);        }        /// <summary>         /// 動態調用WebService         /// </summary>         /// <param name="url">WebService地址</param>         /// <param name="classname">類名</param>         /// <param name="methodname">方法名(模塊名)</param>         /// <param name="args">參數列表</param>         /// <returns>object</returns>         public static object InvokeWebService(string url, string classname, string methodname, object[] args)        {            string @namespace = "ServiceBase.WebService.DynamicWebLoad";            if (classname == null || classname == "")            {                classname = WebServiceHelper.GetClassName(url);            }            //獲取服務描述語言(WSDL)             WebClient wc = new WebClient();            Stream stream = wc.OpenRead(url + "?WSDL");            ServiceDescription sd = ServiceDescription.Read(stream);            ServiceDescriptionImporter sdi = new ServiceDescriptionImporter();            sdi.AddServiceDescription(sd, "", "");            CodeNamespace cn = new CodeNamespace(@namespace);            //生成客戶端代理類代碼             CodeCompileUnit ccu = new CodeCompileUnit();            ccu.Namespaces.Add(cn);            sdi.Import(cn, ccu);            CSharpCodeProvider csc = new CSharpCodeProvider();            ICodeCompiler icc = csc.CreateCompiler();            //設定編譯器的參數             CompilerParameters cplist = new 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");            //編譯代理類             CompilerResults cr = icc.CompileAssemblyFromDom(cplist, ccu);            if (true == cr.Errors.HasErrors)            {                System.Text.StringBuilder sb = new StringBuilder();                foreach (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);        }        /// <summary>        ///         /// </summary>        /// <param name="url"></param>        /// <returns></returns>        private static string GetClassName(string url)        {            string[] parts = url.Split('/');            string[] pps = parts[parts.Length - 1].Split('.');            return pps[0];        }        #endregion    }}

  測試1

            string url = "http://www.webservicex.net/globalweather.asmx";            string[] args = new string[2];            args[0] = "shenzhen";            args[1] = "China";            object result = WebServiceHelper.InvokeWebService(url, "GetWeather", args);            this.label_Result.Text = result.ToString();

  原結果:

<string xmlns="http://www.webserviceX.NET"><?xml version="1.0" encoding="utf-16"?> <CurrentWeather> <Location>Shenzhen, China (ZGSZ) 22-33N 114-06E 18M</Location> <Time>Jun 25, 2015 - 10:00 AM EDT / 2015.06.25 1400 UTC</Time> <Wind> from the SSE (150 degrees) at 13 MPH (12 KT):0</Wind> <Visibility> greater than 7 mile(s):0</Visibility> <SkyConditions> mostly clear</SkyConditions> <Temperature> 84 F (29 C)</Temperature> <DewPoint> 78 F (26 C)</DewPoint> <RelativeHumidity> 83%</RelativeHumidity> <Pressure> 29.68 in. Hg (1005 hPa)</Pressure> <Status>Success</Status> </CurrentWeather></string>

  

測試2

 try            {                /*                 * http://webservice.webxml.com.cn/webservices/DomesticAirline.asmx                 getDomesticAirlinesTime                獲得航班時刻表 DataSet                輸入參數:startCity = 出發城市(中文城市名稱或縮寫、空則默認:上海);lastCity = 抵達城市(中文城市名稱或縮寫、空則默認:北京);theDate = 出發日期(String 格式:yyyy-MM-dd,如:2007-07-02,空則默認當天);userID = 商業用戶ID(免費用戶不需要)                返回數據:DataSet,Table(0)結構為 Item(Company)航空公司、Item(AirlineCode)航班號、Item(StartDrome)出發機場、Item(ArriveDrome)到達機場、Item(StartTime)出發時間、Item(ArriveTime)到達時間、Item(Mode)機型、Item(AirlineStop)經停、Item(Week)飛行周期(星期)                 */                string url = "http://webservice.webxml.com.cn/webservices/DomesticAirline.asmx";                string[] args = new string[4];                args[0] = "上海";                args[1] = "北京";                args[2] = "2015-6-25";//當天時間                args[3] = "";                object result = WebServiceHelper.InvokeWebService(url, "getDomesticAirlinesTime", args);                DataSet dsetAirline = result as DataSet;                this.GridView1.DataSource = dsetAirline.Tables[0];                this.GridView1.DataBind();                Response.Write(dsetAirline.Tables[0].Rows.Count.ToString());            }            catch (Exception ex)            {                Response.Write(ex.Message.ToString());            }

  查詢原結果:

<DataSet xmlns="http://WebXml.com.cn/"><xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="Airlines"><xs:element name="Airlines" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"><xs:complexType><xs:choice minOccurs="0" maxOccurs="unbounded"><xs:element name="AirlinesTime"><xs:complexType><xs:sequence><xs:element name="Company" type="xs:string" minOccurs="0"/><xs:element name="AirlineCode" type="xs:string" minOccurs="0"/><xs:element name="StartDrome" type="xs:string" minOccurs="0"/><xs:element name="ArriveDrome" type="xs:string" minOccurs="0"/><xs:element name="StartTime" type="xs:string" minOccurs="0"/><xs:element name="ArriveTime" type="xs:string" minOccurs="0"/><xs:element name="Mode" type="xs:string" minOccurs="0"/><xs:element name="AirlineStop" type="xs:string" minOccurs="0"/><xs:element name="Week" type="xs:string" minOccurs="0"/></xs:sequence></xs:complexType></xs:element></xs:choice></xs:complexType></xs:element></xs:schema><diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"><Airlines xmlns=""><AirlinesTime diffgr:id="AirlinesTime1" msdata:roWorder="0"><Company>東方航空</Company><AirlineCode>M
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 利川市| 大余县| 苍山县| 荥经县| 突泉县| 九江市| 新巴尔虎右旗| 剑阁县| 偃师市| 大方县| 景泰县| 新巴尔虎左旗| 永丰县| 玉环县| 克山县| 滨州市| 曲麻莱县| 西畴县| 吉安市| 应用必备| 特克斯县| 萝北县| 德清县| 噶尔县| 灌云县| 东明县| 甘肃省| 西充县| 思南县| 溆浦县| 海南省| 丹棱县| 鄂伦春自治旗| 梁山县| 社会| 万宁市| 阳春市| 壶关县| 铅山县| 长沙县| 南川市|