Soap流程

Posted on 2015-07-16 17:48  laojiahuo  阅读(377)  评论(0编辑  收藏  举报

首先本文不对SOAP有过多的解释,你只需知道它是--简单对象访问协议,一种轻量的、简单的、基于 XML 的协议。举个例子,WebService其实就基于SOAP的。

 

再简单的说一下,SOAP就是打包-->发送-->收包-->处理-->返回包等一系列流程,在ASP.NET中可以使用MSXML2中的XMLHTTPClass类来创建SOAP发送对象,先下载Interop.MSXML2.dll,然后复制到VS项目的bin目录,或者在VS里添加引用。创建如下代码:

 

[csharp] view plaincopyprint?

#region 引用的命名空间  

using System;  

using System.IO;  

using System.Data;  

using System.Web;  

using System.Text.RegularExpressions;  

using System.Collections.Generic;  

using System.Text;  

using System.Xml;  

using MSXML2;//xmlHttp所属命名空间(添加引用:COM->Microsoft Xml 3.0)  

#endregion  

    

namespace Simple.SOAP  

{  

    #region Send:处理 XML 数据的发送。  

    /// <summary>  

    /// 处理 XML 数据的发送。  

    /// </summary>  

    public class Send  

    {  

        /// <summary>  

        /// XMLHTTP 对象。  

        /// </summary>  

        private XMLHTTP xmlHttp = new XMLHTTPClass();  

        /// <summary>  

        /// Send 失败后的提示信息。  

        /// </summary>  

        private string _error = "";  

        /// <summary>  

        /// 发送数据包的字符串表现形式。  

        /// </summary>  

        private string _data = "";  

        /// <summary>  

        /// Send 返回数据包的字符串表现形式。  

        /// </summary>  

        private string _return = "";  

    

        /// <summary>  

        /// 获取或设置发送数据包的字符串表现形式(建议发送XML数据文档的字符串表现形式)。  

        /// </summary>  

        public string Data  

        {  

            get  

            {  

                return _data;  

            }  

            set  

            {  

                _data = value;  

            }  

        }  

        /// <summary>  

        /// 获取 Send 返回数据包的字符串表现形式。  

        /// </summary>  

        public string Return  

        {  

            get  

            {  

                return _return;  

            }  

        }  

        /// <summary>  

        /// 获取 Send 失败后的提示信息。  

        /// </summary>  

        public string Error  

        {  

            get  

            {  

                return _error;  

            }  

        }  

    

        /// <summary>  

        /// 初始化 Send 类的新实例。  

        /// </summary>  

        public Send()  

        {  

        }  

        /// <summary>  

        /// 初始化 Send 类的新实例。  

        /// </summary>  

        /// <param name="data">要发送数据的字符串表现形式(建议发送 XML 数据文档的字符串表现形式)。</param>  

        public Send(string data)  

        {  

            _data = data;  

        }  

    

        /// <summary>  

        /// 发送数据。  

        /// </summary>  

        /// <param name="url">要发送到的Url路径字符串。</param>  

        /// <returns>true 表示发送成功,false 发送失败。</returns>  

        public bool ExecuteSend(string url)  

        {  

            return ExecuteSend("POST", url);  

        }  

        /// <summary>  

        /// 发送数据。  

        /// </summary>  

        /// <param name="url">要发送到的 url 路径字符串。</param>  

        /// <param name="method">发送方式。</param>  

        /// <returns>true 表示发送成功,false 发送失败。</returns>  

        public bool ExecuteSend(string url, string method)  

        {  

            bool b = false;  

            xmlHttp.open(method, url, false, null, null);  

            xmlHttp.send(_data);  

            if (xmlHttp.readyState == 4)  

            {  

                if (xmlHttp.status == 200)  

                {  

                    _return = xmlHttp.responseText;  

                    b = true;  

                }  

                else  

                {  

                    _error = "请求页面有异常(XMLHTTP.status=" + xmlHttp.status + ")。";  

                }  

            }  

            else  

            {  

                _error = "请求页面有异常(XMLHTTP.readyState=" + xmlHttp.readyState + ")。";  

            }  

            return b;  

        }  

    }  

    #endregion  

   

    #region Incept:处理 XML 数据的接收。  

    /// <summary>  

    /// 处理 XML 数据的接收。  

    /// </summary>  

    public static class Incept  

    {  

        /// <summary>  

        /// 获取接收的数据包,并使用指定的编码

对数据包进行解码。  

        /// </summary>  

        /// <returns>数据包的字符串形式。</returns>  

        public static string ExecuteIncept()  

        {  

 

Copyright © 2024 laojiahuo
Powered by .NET 9.0 on Kubernetes