这篇文章介绍了c#动态调用Webservice的两种方法实例,有需要的朋友可以参考一下
方法一:
复制代码 代码如下:
Hashtable ht = new Hashtable();
ht.Add("a", "testhelloworld");
XmlDocument xx = WebServicesHelper.QuerySoapWebService("https://www.0133.cn/elab_mgmt/WorkflowSchemeTaskSerivce.asmx", "ATesting", ht);
string ss = xx.OuterXml;
复制代码 代码如下:
///
/// 通用WebService调用(Soap),参数Pars为String类型的参数名、参数值
///
public static XmlDocument QuerySoapWebService(String URL, String MethodName, Hashtable Pars)
{
if (_xmlNamespaces.ContainsKey(URL))
{
return QuerySoapWebService(URL, MethodName, Pars, _xmlNamespaces[URL].ToString());
}
else
{
return QuerySoapWebService(URL, MethodName, Pars, GetNamespace(URL));
}
}
复制代码 代码如下:
private static XmlDocument QuerySoapWebService(String URL, String MethodName, Hashtable Pars, string XmlNs)
{
_xmlNamespaces[URL] = XmlNs;//加入缓存,提高效率
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(URL);
request.Method = "POST";
request.ContentType = "text/xml; charset=utf-8";
request.Headers.Add("SOAPAction", "\"" + XmlNs + (XmlNs.EndsWith("/") ? "" : "/") + MethodName + "\"");
SetWebRequest(request);
byte[] data = EncodeParsToSoap(Pars, XmlNs, MethodName);
WriteRequestData(request, data);
XmlDocument doc = new XmlDocument(), doc2 = new XmlDocument();
doc = ReadXmlResponse(request.GetResponse());
XmlNamespaceManager mgr = new XmlNamespaceManager(doc.NameTable);
mgr.AddNamespace("soap", "http://schemas.xmlsoap.org/soap/envelope/");
String RetXml = doc.SelectSingleNode("//soap:Body/*/*", mgr).InnerXml;
doc2.LoadXml("" + RetXml + "");
AddDelaration(doc2);
return doc2;
}
以上就是c#动态调用Webservice的两种方法实例的详细内容,更多请关注0133技术站其它相关文章!