• SOAP简单示例


    看了网上的几个文章,SOAP的示例布局都不清晰,不能马上入手,特意写个例子与大家分享,同时记录备用。

    当前环境:VS2013 + WPF

    private void Button_Click(object sender, RoutedEventArgs e)
            {
                string url = "http://www.webxml.com.cn/WebServices/WeatherWS.asmx";
                string soap = SetSoapMessage();// 构造soap请求信息
    
                string result = GetSOAPReSource(url, soap);
    
                txtShow.Text = result.Replace(">", ">
    ").Replace("<string>
    ", "<string>");
            }
    
            #region 发起SOAP请求
            /// <summary>
            /// 发起SOAP请求
            /// </summary>
            /// <param name="url">URL</param>
            /// <param name="datastr">数据</param>
            /// <returns></returns>
            public static string GetSOAPReSource(string url, string datastr)
            {
                //发起请求
                Uri uri = new Uri(url);
                WebRequest webRequest = WebRequest.Create(uri);
                webRequest.ContentType = "text/xml; charset=utf-8";
                webRequest.Method = "POST";
                using (Stream requestStream = webRequest.GetRequestStream())
                {
                    byte[] paramBytes = Encoding.UTF8.GetBytes(datastr.ToString());
                    requestStream.Write(paramBytes, 0, paramBytes.Length);
                }
    
                //响应
                WebResponse webResponse = webRequest.GetResponse();
                using (StreamReader myStreamReader = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8))
                {
                    string result = "";
                    return result = myStreamReader.ReadToEnd();
                }
            } 
            #endregion
    
            #region 构造soap请求信息
            string SetSoapMessage()
            {
                string header = "";
                string body = "";
                string fault = "";
    
                body = "<getRegionCountry xmlns="http://WebXml.com.cn/" />";
                
                return GetSoapMessageByBase(header, body, fault);
            } 
            #endregion
    
            #region SOAP消息基本结构
            /// <summary>
            /// SOAP消息基本结构
            /// </summary>
            /// <param name="header">头部(包含Header)</param>
            /// <param name="body">内容主体(包含Body)</param>
            /// <param name="fault">错误提示(包含Fault)</param>
            /// <returns></returns>
            string GetSoapMessageByBase(string header, string body, string fault)
            {
                StringBuilder soap = new StringBuilder();
                soap.Append("<?xml version="1.0" encoding="utf-8"?>");
                soap.Append("<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">");
                //添加头部
                if (!string.IsNullOrWhiteSpace(header))
                {
                    soap.Append("<soap:Header>");
                    soap.Append(header);
                    soap.Append("</soap:Header>");
                }
                //添加内容
                if (!string.IsNullOrWhiteSpace(body))
                {
                    soap.Append("<soap:Body>");
                    soap.Append(body);
                     
                    //添加错误
                    if (!string.IsNullOrWhiteSpace(fault))
                    {
                        soap.Append("<soap:Fault>");
                        soap.Append(fault);
                        soap.Append("</soap:Fault>");
                    }
    
                    soap.Append("</soap:Body>");
                }
    
                soap.Append("</soap:Envelope>");
    
                return soap.ToString();
            } 
            #endregion
  • 相关阅读:
    ubuntu安装-Docker(zz)
    vpp编译
    dpdk编译
    通过P4runtime进行解耦
    run p4 in mininet
    搭建基于Open vSwitch的VxLAN隧道实zz
    路由协议
    dNOS from AT&T
    《Java程序设计》实验一 Java开发环境的熟悉
    《Java程序设计》第五周学习总结
  • 原文地址:https://www.cnblogs.com/xcsn/p/4383419.html
Copyright © 2020-2023  润新知