方法一:
代码如下:
Hashtableht=newHashtable();
ht.Add(“a”,”testhelloworld”);
XmlDocumentxx=WebServicesHelper.QuerySoapWebService(“//www.jb51.net/elab_mgmt/WorkflowSchemeTaskSerivce.asmx”,”ATesting”,ht);
stringss=xx.OuterXml;
代码如下:
///<summary>
///通用WebService调用(Soap),参数Pars为String类型的参数名、参数值
///</summary>
publicstaticXmlDocumentQuerySoapWebService(StringURL,StringMethodName,HashtablePars)
{
if(_xmlNamespaces.ContainsKey(URL))
{
returnQuerySoapWebService(URL,MethodName,Pars,_xmlNamespaces[URL].ToString());
}
else
{
returnQuerySoapWebService(URL,MethodName,Pars,GetNamespace(URL));
}
}
代码如下:
privatestaticXmlDocumentQuerySoapWebService(StringURL,StringMethodName,HashtablePars,stringXmlNs)
{
_xmlNamespaces[URL]=XmlNs;//加入缓存,提高效率
HttpWebRequestrequest=(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);
XmlDocumentdoc=newXmlDocument(),doc2=newXmlDocument();
doc=ReadXmlResponse(request.GetResponse());
XmlNamespaceManagermgr=newXmlNamespaceManager(doc.NameTable);
mgr.AddNamespace(“soap”,”https://schemas.xmlsoap.org/soap/envelope/”);
StringRetXml=doc.SelectSingleNode(“//soap:Body/*/*”,mgr).InnerXml;
doc2.LoadXml(“<root>”+RetXml+”</root>”);
AddDelaration(doc2);
returndoc2;
}
代码如下:
privatestaticstringGetNamespace(StringURL)
{
HttpWebRequestrequest=(HttpWebRequest)WebRequest.Create(URL+”?WSDL”);
SetWebRequest(request);
WebResponseresponse=request.GetResponse();
StreamReadersr=newStreamReader(response.GetResponseStream(),Encoding.UTF8);
XmlDocumentdoc=newXmlDocument();
doc.LoadXml(sr.ReadToEnd());
sr.Close();
returndoc.SelectSingleNode(“//@targetNamespace”).Value;
}
方法二:
通过SOAPUI直接取URL
代码如下:
stringpostData2=”<soapenv:Envelopexmlns:soapenv=”https://schemas.xmlsoap.org/soap/envelope/”xmlns:tem=”https://tempuri.org/”><soapenv:Header/><soapenv:Body><tem:ATesting><!–Optional:–><tem:a>?</tem:a></tem:ATesting></soapenv:Body></soapenv:Envelope>”;
HttpHelper.GetResponseFormUrlAsync(“https://www.xxx.com/testingservices.asmx?wsdl”,postData2,”text/xml”,true,newAsyncCallback(responseCallback));
代码如下:
}
staticvoidresponseCallback(IAsyncResultar)
{
HttpWebRequestreq=ar.AsyncStateasHttpWebRequest;
if(req==null)
return;
try
{
HttpWebResponseresponse=req.EndGetResponse(ar)asHttpWebResponse;
if(response.StatusCode!=HttpStatusCode.OK)
{
response.Close();
LogHelper.Error(“定时任务”,”异步执行失败,”+req.RequestUri.ToString()+”rnResponse状态代码为rn”+response.StatusCode.ToString());
return;
}
StreamresponseStream=response.GetResponseStream();
StreamReaderreader=newStreamReader(responseStream,Encoding.UTF8);
stringResponseStr=reader.ReadToEnd();
responseStream.Close();
LogHelper.Warn(“定时任务”,req.RequestUri.ToString()+”rn”+ResponseStr);
}
catch(Exceptione)
{
LogHelper.Fatal(“定时任务”,req.RequestUri.ToString()+”rn执行失败”,e);
}
}
您可能感兴趣的文章:C#动态webservice调用接口C#.Net动态调用webService实现思路及代码C#创建、部署和调用WebService简单示例C#调用webservice接口的最新方法教程C#调用WebService实例开发C#使用HttpPost请求调用WebService的方法C#调用JavaWebservice服务遇到的问题汇总C#调用和实现WebService,纯手工打造!C#调用WebService实例与开发教程(推荐)c#中WebService的介绍及调用方式小结
OnSize、OnSizing和OnGetMinMaxInfo区别分析
MoveWindow() SetWindowPos()的区别于联系
上述就是C#学习教程:c#动态调用Webservice的两种方法实例分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/904907.html