首先本文不对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()
{