C#_Soap调用webservice服务
如题,使用soap自定义方法调用webservice:
自定义代码块
方法内有注释:
using System;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.Collections;
using System.Data;
using System.IO;
using System.Net;
using System.Text;
using System.Web.Services.Description;
using System.Xml;
using System.Xml.Serialization;
using Microsoft.CSharp;
namespace Wonders.InterfaceGuiYang.Services.Common
{
/// <summary>
/// 利用WebRequest/WebResponse进行WebService调用的类
/// </summary>
public class WdFuncWsCaller
{
//缓存xmlNamespace,避免重复调用GetNamespace
private static readonly Hashtable XmlNamespace = new Hashtable();
#region SOAP动态调用
/// <summary>
/// 通过SOAP协议动态调用webservice
/// </summary>
/// <param name="url"> webservice地址</param>
/// <param name="methodName"> 调用方法名</param>
/// <param name="pars"> 参数表</param>
/// <returns> 结果集xml的String格式</returns>
public static String SoapWebServiceString(String url, String methodName, Hashtable pars)
{
XmlDocument doc = SoapWebService(url, methodName, pars);
return doc.InnerText;
}
/// <summary>
/// 通过SOAP协议动态调用webservice
/// </summary>
/// <param name="url"> webservice地址</param>
/// <param name="methodName"> 调用方法名</param>
/// <param name="pars"> 参数表</param>
/// <returns> 结果集转换的DataSet</returns>
public static DataSet SoapWebServiceDataSet(String url, String methodName, Hashtable pars)
{
XmlDocument doc = SoapWebService(url, methodName, pars);
System.Data.DataSet ds = new System.Data.DataSet();
using (XmlNodeReader reader = new XmlNodeReader(doc))
{
ds.ReadXml(reader);
}
return ds;
}
/// <summary>
/// 通过SOAP协议动态调用webservice
/// </summary>
/// <param name="url"> webservice地址</param>
/// <param name="methodName"> 调用方法名</param>
/// <param name="pars"> 参数表</param>
/// <returns> 结果集XmlDocument</returns>
public static XmlDocument SoapWebService(String url, String methodName, Hashtable pars)
{
if (XmlNamespace.ContainsKey(url))
{ // 名字空间在缓存中存在时,读取缓存,然后执行调用
return QuerySoapWebService(url, methodName, pars, XmlNamespace[url].ToString());
}
// 名字空间不存在时直接从wsdl的请求中读取名字空间,然后执行调用
return QuerySoapWebService(url, methodName, pars, GetNamespace(url));
}
/// <summary>
/// 通过SOAP协议动态调用webservice
/// </summary>
/// <param name="url"> webservice地址