亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

動態webservice調用接口并讀取解析返回結果

2020-01-24 01:48:07
字體:
來源:轉載
供稿:網友

這里給大家帶來的是動態webservice調用接口并讀取解析返回結果的具體示例,非常的簡單,注釋也很詳細,小伙伴們可以參考下。

using System;using System.Collections;using System.IO;using System.Net;using System.Text;using System.Xml;using System.Xml.Serialization;namespace Hishop.Plugins{  /// <summary>  /// 利用WebRequest/WebResponse進行WebService調用的類  /// </summary>  public class WebServiceCaller  {    #region Tip:使用說明    //webServices 應該支持Get和Post調用,在web.config應該增加以下代碼    //<webServices>    // <protocols>    //  <add name="HttpGet"/>    //  <add name="HttpPost"/>    // </protocols>    //</webServices>     //調用示例:    //Hashtable ht = new Hashtable(); //Hashtable 為webservice所需要的參數集    //ht.Add("str", "test");    //ht.Add("b", "true");    //XmlDocument xx = WebSvcCaller.QuerySoapWebService("http://localhost:81/service.asmx", "HelloWorld", ht);    //MessageBox.Show(xx.OuterXml);    #endregion     /// <summary>    /// 需要WebService支持Post調用    /// </summary>    public static XmlDocument QueryPostWebService(String URL, String MethodName, Hashtable Pars)    {      HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(URL + "/" + MethodName);      request.Method = "POST";      request.ContentType = "application/x-www-form-urlencoded";      SetWebRequest(request);      byte[] data = EncodePars(Pars);      WriteRequestData(request, data);      return ReadXmlResponse(request.GetResponse());    }     /// <summary>    /// 需要WebService支持Get調用    /// </summary>    public static XmlDocument QueryGetWebService(String URL, String MethodName, Hashtable Pars)    {      HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(URL + "/" + MethodName + "?" + ParsToString(Pars));      request.Method = "GET";      request.ContentType = "application/x-www-form-urlencoded";      SetWebRequest(request);      return ReadXmlResponse(request.GetResponse());    }     /// <summary>    /// 通用WebService調用(Soap),參數Pars為String類型的參數名、參數值    /// </summary>    public static XmlDocument QuerySoapWebService(String URL, String MethodName, Hashtable Pars)    {      if (_xmlNamespaces.ContainsKey(URL))      {        return QuerySoapWebService(URL, MethodName, Pars, _xmlNamespaces[URL].ToString());      }      else      {        return QuerySoapWebService(URL, MethodName, Pars, GetNamespace(URL));      }    }     private static XmlDocument QuerySoapWebService(String URL, String MethodName, Hashtable Pars, string XmlNs)    {      _xmlNamespaces[URL] = XmlNs;//加入緩存,提高效率      HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(URL);      request.Method = "POST";      request.ContentType = "text/xml; charset=utf-8";      request.Headers.Add("SOAPAction", "/"" + XmlNs + (XmlNs.EndsWith("/") ? "" : "/") + MethodName + "/"");      SetWebRequest(request);      byte[] data = EncodeParsToSoap(Pars, XmlNs, MethodName);      WriteRequestData(request, data);      XmlDocument doc = new XmlDocument(), doc2 = new XmlDocument();      doc = ReadXmlResponse(request.GetResponse());       XmlNamespaceManager mgr = new XmlNamespaceManager(doc.NameTable);      mgr.AddNamespace("soap", "http://schemas.xmlsoap.org/soap/envelope/");      String RetXml = doc.SelectSingleNode("http://soap:Body/*/*", mgr).InnerXml;      doc2.LoadXml("<root>" + RetXml + "</root>");      AddDelaration(doc2);      return doc2;    }    private static string GetNamespace(String URL)    {      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL + "?WSDL");      SetWebRequest(request);      WebResponse response = request.GetResponse();      StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);      XmlDocument doc = new XmlDocument();      doc.LoadXml(sr.ReadToEnd());      sr.Close();      return doc.SelectSingleNode("http://@targetNamespace").Value;    }     private static byte[] EncodeParsToSoap(Hashtable Pars, String XmlNs, String MethodName)    {      XmlDocument doc = new XmlDocument();      doc.LoadXml("<soap:Envelope xmlns:xsi=/"http://www.w3.org/2001/XMLSchema-instance/" xmlns:xsd=/"http://www.w3.org/2001/XMLSchema/" xmlns:soap=/"http://schemas.xmlsoap.org/soap/envelope//"></soap:Envelope>");      AddDelaration(doc);      //XmlElement soapBody = doc.createElement_x_x("soap", "Body", "http://schemas.xmlsoap.org/soap/envelope/");      XmlElement soapBody = doc.CreateElement("soap", "Body", "http://schemas.xmlsoap.org/soap/envelope/");      //XmlElement soapMethod = doc.createElement_x_x(MethodName);      XmlElement soapMethod = doc.CreateElement(MethodName);      soapMethod.SetAttribute("xmlns", XmlNs);      foreach (string k in Pars.Keys)      {        //XmlElement soapPar = doc.createElement_x_x(k);        XmlElement soapPar = doc.CreateElement(k);        soapPar.InnerXml = ObjectToSoapXml(Pars[k]);        soapMethod.AppendChild(soapPar);      }      soapBody.AppendChild(soapMethod);      doc.DocumentElement.AppendChild(soapBody);      return Encoding.UTF8.GetBytes(doc.OuterXml);    }    private static string ObjectToSoapXml(object o)    {      XmlSerializer mySerializer = new XmlSerializer(o.GetType());      MemoryStream ms = new MemoryStream();      mySerializer.Serialize(ms, o);      XmlDocument doc = new XmlDocument();      doc.LoadXml(Encoding.UTF8.GetString(ms.ToArray()));      if (doc.DocumentElement != null)      {        return doc.DocumentElement.InnerXml;      }      else      {        return o.ToString();      }    }     /// <summary>    /// 設置憑證與超時時間    /// </summary>    /// <param name="request"></param>    private static void SetWebRequest(HttpWebRequest request)    {      request.Credentials = CredentialCache.DefaultCredentials;      request.Timeout = 10000;    }     private static void WriteRequestData(HttpWebRequest request, byte[] data)    {      request.ContentLength = data.Length;      Stream writer = request.GetRequestStream();      writer.Write(data, 0, data.Length);      writer.Close();    }     private static byte[] EncodePars(Hashtable Pars)    {      return Encoding.UTF8.GetBytes(ParsToString(Pars));    }     private static String ParsToString(Hashtable Pars)    {      StringBuilder sb = new StringBuilder();      foreach (string k in Pars.Keys)      {        if (sb.Length > 0)        {          sb.Append("&");        }        //sb.Append(HttpUtility.UrlEncode(k) + "=" + HttpUtility.UrlEncode(Pars[k].ToString()));      }      return sb.ToString();    }     private static XmlDocument ReadXmlResponse(WebResponse response)    {      StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);      String retXml = sr.ReadToEnd();      sr.Close();      XmlDocument doc = new XmlDocument();      doc.LoadXml(retXml);      return doc;    }     private static void AddDelaration(XmlDocument doc)    {      XmlDeclaration decl = doc.CreateXmlDeclaration("1.0", "utf-8", null);      doc.InsertBefore(decl, doc.DocumentElement);    }     private static Hashtable _xmlNamespaces = new Hashtable();//緩存xmlNamespace,避免重復調用GetNamespace  }}
//調用并讀取解析返回結果  DataSet ds = new DataSet();     XmlNode xmlNode1;    XmlDataDocument xd = new XmlDataDocument();    StringBuilder sb;     Hashtable ht = new Hashtable();    ht.Add("xmlIn", "<Request><MemCode>001</MemCode></Request>");    xmlNode1 = Hishop.Plugins.WebServiceCaller.QuerySoapWebService("http://xxx.xxxx.com/Service.asmx", "SinPointQuery", ht);    if (xmlNode1 == null)    {      return;    }    string xmlstr= HttpUtility.HtmlDecode(xmlNode1.OuterXml);    sb = new StringBuilder(xmlstr);    if (sb.ToString().Equals(""))    {      return;    }    xd.LoadXml(sb.ToString());    ds.ReadXml(new XmlNodeReader(xd));     //ds可以返回出結果集

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
69av视频在线播放| 国产97色在线|日韩| 欧美理论片在线观看| 久久综合伊人77777| 成人免费网站在线观看| 亚洲精品美女久久久| 成人精品一区二区三区电影黑人| 国产香蕉一区二区三区在线视频| xxx成人少妇69| 一区二区亚洲欧洲国产日韩| 亚洲第一精品福利| 成人黄色中文字幕| 久热99视频在线观看| 国产精品高潮粉嫩av| 久久久久久高潮国产精品视| 久久久久久久久久久国产| 精品国产一区二区三区四区在线观看| 亚洲欧美中文日韩v在线观看| 亚洲一区精品电影| 亚洲国产天堂网精品网站| 久久亚洲综合国产精品99麻豆精品福利| 欧美国产欧美亚洲国产日韩mv天天看完整| 国产精品户外野外| 亚洲视频第一页| 国产精品精品国产| 国产精品色悠悠| 久久久女人电视剧免费播放下载| 精品亚洲国产视频| 国产在线98福利播放视频| 久久影院在线观看| 欧美老肥婆性猛交视频| 中文字幕日韩在线视频| 精品国产一区久久久| 欧美做受高潮电影o| 日韩精品在线观看视频| 午夜精品久久久久久久久久久久| 成人黄色短视频在线观看| 亚洲视屏在线播放| 97精品视频在线观看| 国模私拍一区二区三区| 日韩视频永久免费观看| 国产在线播放91| 成人精品久久久| 国产成人在线一区二区| 久久免费少妇高潮久久精品99| 91精品在线观| 国模精品视频一区二区三区| 亚洲激情电影中文字幕| 国产欧美日韩精品在线观看| 亚洲网站视频福利| 高潮白浆女日韩av免费看| 国内精品免费午夜毛片| 成人美女av在线直播| 国产精品自产拍在线观| 国产在线一区二区三区| 欧美成人性色生活仑片| 亚洲精品动漫久久久久| 日韩专区在线观看| 精品视频久久久| 国产精品三级美女白浆呻吟| 久久久久久中文| 国产精品高潮呻吟久久av黑人| 日韩精品视频免费专区在线播放| 久久久在线观看| 91免费人成网站在线观看18| 欧美精品久久久久久久久久| 日韩欧美在线视频免费观看| 91欧美精品午夜性色福利在线| 亚洲美女激情视频| 91经典在线视频| 欧美日韩成人在线视频| 青青草原成人在线视频| 色婷婷av一区二区三区久久| 日韩精品极品在线观看播放免费视频| 亚洲美女av在线| 精品久久久香蕉免费精品视频| 亚洲欧美日韩成人| 日韩有码视频在线| 久久99亚洲精品| 91牛牛免费视频| 最近2019中文字幕第三页视频| 国语自产精品视频在线看一大j8| 亚洲精品suv精品一区二区| 欧洲成人免费aa| 久久久亚洲成人| 国产精品视频xxx| 国产视频观看一区| 亚洲国产成人91精品| 久久艳片www.17c.com| 国产精品久久久久久搜索| 91精品国产91久久久久久吃药| 中文字幕成人在线| 国产欧美在线视频| 亚洲福利小视频| 国产精品网址在线| 欧美另类99xxxxx| 亚洲成人网av| 国产mv免费观看入口亚洲| 97视频在线观看成人| 日韩国产在线播放| 成人疯狂猛交xxx| 中文字幕日韩精品在线观看| 欧美亚州一区二区三区| 国产精品高潮呻吟久久av黑人| 久久久免费观看| 国产手机视频精品| 韩国一区二区电影| 姬川优奈aav一区二区| 成人激情视频网| 日韩欧美国产免费播放| 国产精品美女免费视频| 国产成人精品a视频一区www| 亚洲精品视频网上网址在线观看| 欧美在线视频免费播放| 国产精品久久91| 欧洲精品毛片网站| 亚洲sss综合天堂久久| 久久91亚洲精品中文字幕| 欧美午夜片在线免费观看| 欧美激情极品视频| 2018日韩中文字幕| 国产网站欧美日韩免费精品在线观看| 欧美亚洲激情视频| 国产va免费精品高清在线| 日韩欧美亚洲综合| 欧美视频在线观看免费网址| 国产精品日本精品| 国产午夜精品麻豆| 成人免费视频a| 国产精品免费视频久久久| 韩国精品美女www爽爽爽视频| 国产精品一区二区av影院萌芽| 日韩中文字幕在线播放| 欧美激情视频免费观看| 亚洲剧情一区二区| 国内精品模特av私拍在线观看| 久久99国产综合精品女同| 成人免费午夜电影| 在线观看国产精品日韩av| 亚洲最大福利视频| 在线观看国产成人av片| 久久久人成影片一区二区三区观看| 欧美日韩视频免费播放| 91欧美视频网站| 成人中文字幕在线观看| 精品国偷自产在线视频| 日韩电影在线观看中文字幕| 欧美亚洲国产成人精品| 国产欧美日韩免费| 精品电影在线观看| 日韩欧中文字幕| 伊人一区二区三区久久精品| 欧美精品第一页在线播放| 亚洲激情第一页| 欧美成人精品在线视频| 亚洲视频免费一区| 久久久久久久影院| 日韩欧美在线第一页| 欧美夫妻性生活视频| 久久久久久69| 亚洲成人精品久久久| 日韩不卡在线观看| 久久久免费电影| 91色视频在线导航|