Csharp/C#教程:c#动态调用Webservice的两种方法实例分享

方法一:
代码如下:
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的介绍及调用方式小结

标签: 动态 vi ce ebs 方法 调用 service c# ice

OnSize、OnSizing和OnGetMinMaxInfo区别分析

MoveWindow() SetWindowPos()的区别于联系

上述就是C#学习教程:c#动态调用Webservice的两种方法实例分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/904907.html

(0)
上一篇 2021年10月22日
下一篇 2021年10月22日

精彩推荐