您的位置:首页 > 其它

Soap流程

2015-07-16 17:48 405 查看
首先本文不对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()

{
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: