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

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

C# 通過Get、Post、Soap調用WebService的方法

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

C# 通過Get、Post、Soap調用WebService的方法

實現代碼來源于網絡,我只是作了一些修改!

using System;using System.Web;using System.xml;using System.Collections;using System.Net;using System.Text;using System.IO;using System.Xml.Serialization;/// <summary>///  利用WebRequest/WebResponse進行WebService調用的類/// </summary>public class WebServiceHelper{    //<webServices>    //  <PRotocols>    //    <add name="HttpGet"/>    //    <add name="HttpPost"/>    //  </protocols>    //</webServices>    private static Hashtable _xmlNamespaces = new Hashtable();//緩存xmlNamespace,避免重復調用GetNamespace    /// <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));        }    }    /// <summary>    /// 通用WebService調用(Soap)    /// </summary>    /// <param name="URL"></param>    /// <param name="MethodName"></param>    /// <param name="Pars"></param>    /// <param name="XmlNs"></param>    /// <returns></returns>    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;    }    /// <summary>    /// 通過WebService的WSDL獲取XML名稱空間    /// </summary>    /// <param name="URL"></param>    /// <returns></returns>    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;    }    /// <summary>    /// 動態生成SOP請求報文內容    /// </summary>    /// <param name="Pars"></param>    /// <param name="XmlNs"></param>    /// <param name="MethodName"></param>    /// <returns></returns>    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("soap", "Body", "http://schemas.xmlsoap.org/soap/envelope/");        XmlElement soapMethod = doc.CreateElement(MethodName);        soapMethod.SetAttribute("xmlns", XmlNs);        foreach (string k in Pars.Keys)        {            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);    }    /// <summary>    /// 將對象轉換成XML節點格式    /// </summary>    /// <param name="o"></param>    /// <returns></returns>    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>    /// 設置WEB請求    /// </summary>    /// <param name="request"></param>    private static void SetWebRequest(HttpWebRequest request)    {        request.Credentials = CredentialCache.DefaultCredentials;        request.Timeout = 10000;    }    /// <summary>    /// 設置請求數據    /// </summary>    /// <param name="request"></param>    /// <param name="data"></param>    private static void WriteRequestData(HttpWebRequest request, byte[] data)    {        request.ContentLength = data.Length;        Stream writer = request.GetRequestStream();        writer.Write(data, 0, data.Length);        writer.Close();    }    /// <summary>    /// 獲取字符串的UTF8碼字符串    /// </summary>    /// <param name="Pars"></param>    /// <returns></returns>    private static byte[] EncodePars(Hashtable Pars)    {        return Encoding.UTF8.GetBytes(ParsToString(Pars));    }    /// <summary>    /// 將Hashtable轉換成WEB請求鍵值對字符串    /// </summary>    /// <param name="Pars"></param>    /// <returns></returns>    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();    }    /// <summary>    /// 獲取Webservice響應報文XML    /// </summary>    /// <param name="response"></param>    /// <returns></returns>    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;    }    /// <summary>    /// 設置XML文檔版本聲明    /// </summary>    /// <param name="doc"></param>    private static void AddDelaration(XmlDocument doc)    {        XmlDeclaration
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩视频永久免费观看| 欧美韩日一区二区| 久久精品视频99| 国产大片精品免费永久看nba| 日韩国产高清污视频在线观看| 国产91热爆ts人妖在线| 欧美午夜精品久久久久久久| 在线色欧美三级视频| 日本欧美中文字幕| 久久久电影免费观看完整版| 欧美午夜精品伦理| 欧美电影免费看| 日韩av片永久免费网站| 午夜精品久久17c| 欧美在线一级va免费观看| 成人黄色av播放免费| 日韩精品视频在线免费观看| 国产日韩欧美日韩| 欧美日韩在线一区| 亚洲一区中文字幕在线观看| 国产精品免费视频xxxx| 日韩精品视频在线观看网址| 亚洲精品乱码久久久久久金桔影视| 欧美激情精品久久久久久免费印度| 九九热最新视频//这里只有精品| 精品福利一区二区| 97国产真实伦对白精彩视频8| 国产中文欧美精品| 性欧美视频videos6一9| 亚洲免费一在线| 欧美精品在线第一页| 国产日韩在线免费| 黑人巨大精品欧美一区二区一视频| 欧美电影在线观看高清| 国产中文日韩欧美| 国产亚洲一区二区精品| 亚洲欧美中文在线视频| 亚洲国产精品va在看黑人| 国内精品久久久久影院优| 美女精品久久久| 日韩精品视频在线播放| 92国产精品久久久久首页| 日韩乱码在线视频| 国产999精品久久久| 欧美精品aaa| 亚洲国内精品在线| 欧美极品美女视频网站在线观看免费| 日韩精品中文字幕在线| 国产精品成熟老女人| 91av视频在线免费观看| 亚洲国产精品久久精品怡红院| 久久99视频精品| 国产手机视频精品| 亚洲美女久久久| 清纯唯美亚洲综合| 欧洲成人免费视频| 国内精品久久久久久中文字幕| 国产主播喷水一区二区| 日韩欧美亚洲国产一区| 欧美激情第一页xxx| 国产精品在线看| 亚洲男人天堂九九视频| 亚洲精选在线观看| 在线播放精品一区二区三区| 日韩麻豆第一页| 欧美亚洲另类在线| 国产综合在线看| 久久久亚洲网站| 日韩av一区二区在线| 7m第一福利500精品视频| 国产精品青草久久久久福利99| 亚洲一区二区少妇| 57pao国产成人免费| 97国产真实伦对白精彩视频8| 亚洲精品国产福利| 日本欧美在线视频| 国产日韩欧美夫妻视频在线观看| 亚洲国产精品人久久电影| 亚洲精品日产aⅴ| 国产在线观看91精品一区| 日韩中文在线视频| 91亚洲精品一区| 日韩国产高清视频在线| 青青久久av北条麻妃海外网| 国产成人精品视频在线| 国产成人自拍视频在线观看| 国产欧美精品xxxx另类| 一区二区三区无码高清视频| 91精品在线国产| 欧美—级高清免费播放| 91在线|亚洲| 欧美日韩一区二区三区在线免费观看| 亚洲欧美日韩图片| 国产精品久久久久7777婷婷| 日韩中文字幕网址| 久久久久国产精品免费网站| 国产精品成人久久久久| 欧美老女人xx| 日韩中文字幕第一页| 午夜精品在线观看| 色综合久久久久久中文网| 国产精品99久久久久久www| 青青精品视频播放| 91成人性视频| 久久97久久97精品免视看| 成人午夜在线影院| 国产精品视频在线播放| 国产成人黄色av| 色综合久综合久久综合久鬼88| 久久成人一区二区| 国产在线视频91| 狠狠干狠狠久久| 欧美日韩国产成人| 国产精品美乳在线观看| 韩国三级日本三级少妇99| 欧美亚洲视频在线看网址| 91伊人影院在线播放| 成人中文字幕+乱码+中文字幕| 91av在线免费观看视频| 日韩欧美在线视频日韩欧美在线视频| 久久国产精品影片| 欧美专区在线观看| 久久中文字幕在线| 亚洲欧美制服中文字幕| 欧美日韩一二三四五区| 久久久91精品国产| 91精品国产91久久久久久不卡| 亚洲人精品午夜在线观看| 国产国语刺激对白av不卡| 欧美激情伊人电影| 国产欧美在线视频| 亚洲欧美一区二区三区久久| 欧美国产日本在线| 亚洲综合中文字幕在线| 国产精品久久久久久久久借妻| 亚洲二区中文字幕| 91av网站在线播放| 亚洲激情第一页| 亚洲aa中文字幕| 色哟哟网站入口亚洲精品| 91精品国产91久久久久久不卡| 欧美成人免费观看| 中文字幕精品网| 成人午夜黄色影院| 亚洲欧美综合区自拍另类| 奇米一区二区三区四区久久| 亚洲视频在线视频| 欧美成人精品三级在线观看| 国产精品欧美日韩久久| 日韩高清av一区二区三区| 国产精品久久久久久av| 成人情趣片在线观看免费| 亚洲大尺度美女在线| 在线精品视频视频中文字幕| 日韩亚洲欧美中文在线| 日韩在线播放av| 亚洲美女av在线播放| 最好看的2019年中文视频| 久久久综合av| 欧美日韩亚洲国产一区| 国产mv久久久| 久久影视三级福利片| 久久国产精品久久久久久| 高清欧美性猛交xxxx|