使用.NET类编写SOAP协议调用Web服务
.net 调用 web server的方法
随着互联网的普及和发展,Web服务器的应用越来越广泛,而在.NET 开发中,调用Web服务器是非常常见的操作。
本文将详细介绍在.NET开发中调用Web服务器的方法。
1. 使用HttpWebRequest和HttpWebResponse类在.NET开发中,可以使用HttpWebRequest和HttpWebResponse 类来实现与Web服务器的交互。
HttpWebRequest类用于创建一个HTTP请求,HttpWebResponse类用于获取服务器的响应。
通过这两个类,可以实现与Web服务器的通信。
以下是一个简单的示例代码:```csharp// 创建一个HttpWebRequest对象HttpWebRequest request =(HttpWebRequest)WebRequest.Create("网络协议xxx");// 设置请求的方法为GETrequest.Method = "GET";// 获取服务器的响应HttpWebResponse response =(HttpWebResponse)request.GetResponse();Stream stream = response.GetResponseStream(); StreamReader reader = new StreamReader(stream);string responseContent = reader.ReadToEnd();```通过上面的代码,可以实现与Web服务器的简单交互。
在实际开发中,还可以根据需要设置请求的其他参数,如请求头、请求体等。
2. 使用HttpClient类在.NET Framework 4.5及以上版本中引入了HttpClient类,它提供了更加灵活和方便的方式与Web服务器进行交互。
HttpClient类使用起来更加简洁,以下是一个简单的示例代码:```csharp// 创建一个HttpClient对象HttpClient client = new HttpClient();// 向服务器发送一个GET请求HttpResponseMessage response = aw本人t client.GetAsync("网络协议xxx");string responseContent = aw本人tresponse.Content.ReadAsStringAsync();```通过HttpClient类,可以方便地实现与Web服务器的交互。
(整理)WebService与SAPECC系统服务发布与调用.
SAP ECC系统Web Service服务发布与调用目录Web Service概念 (3)ECC 6.0 SP14之后版本 (4)发布Web Service服务: (4)1. SE37创建Function (4)2. SE80创建服务 (5)3. SOAMANAGER配置服务 (7)调用SAP系统发布的Web Service服务 (10)1. SE80创建代理 (10)2. LPCONFIG创建Logical Port (11)3. 测试代理 (13)调用外部异构系统发布的Web Service服务 (15)1. SE80创建代理 (15)2. LPCONFIG创建Logical Port (16)3. 测试代理 (17)ECC 6.0 SP14之前版本 (19)发布Web Service服务: (19)1. SE37创建Function (19)2. SE80创建服务 (20)3. WSCONFIG (23)4. WSADMIN (26)调用Web Service服务。
(29)1. SE80创建代理 (29)2. LPCONFIG创建Logical Port (30)3. 测试代理 (31)Web Service概念简单来说,Web Service就是为了使原来各孤立的站点之间的信息能够相互通信、共享而提出的一种接口。
Web Service所使用的是Internet上统一、开放的标准,如HTTP、XML、SOAP(简单对象访问协议)、WSDL等,所以Web Service可以在任何支持这些标准的环境(Windows,Linux)中使用。
注:SOAP协议(Simple Object Access Protocol,简单对象访问协议),它是基于XML的用于分散和分布式环境下网络信息交换的通讯协议。
在此协议下,软件组件或应用程序能够通过标准的HTTP协议进行通讯。
它的设计目标就是简单性和扩展性,这有助于大量异构程序和平台之间的互操作性,从而使存在的应用程序能够被广泛的用户访问。
使用.NET类编写SOAP协议调用Web服务
使用.NET类编写SOAP协议调用Web服务简介:使用.NET类编写SOAP消息,SOAP消息中包含用户的用户帐号,用户密码和帐号ID。
使用HttpWebRequest类发送SOAP请求,请求远程服务器上Web服务程序(客户帐户信息),并使用HttpWebResponse类获取服务响应。
知识点:命名空间:System.Xml创建XML文档的类:XmlTextWriter1.创建XmlTextWriter 对象,设置用Tab键缩进代码示例:XmlTextWriter BookWriter = new XmlTextWriter( @"\catalog\books.xml", Encoding.UTF8);BookWriter.Formatting = Formatting.Indented;2.编写XML文档的根元素使用WriteStartDocument()方法和WriteEndDocument()方法创建XML声明使用WriteStartElement()方法和WriteEndElement()方法创建根元素代码示例:BookWriter.WriteStartDocument();BookWriter.WriteStartElement("books");// 其他元素BookWriter.WriteEndElement();BookWriter.WriteEndDocument();输出:<?xml version="1.0" encoding="utf-8" ?><books><!-- write other elements here --></books>3.编写元素使用WriteElementString()方法创建不包含子元素和属性的元素代码示例:BookWriter.WriteElementString("price", "19.95");输出:<price>19.95</price>使用WriteStartElement()和WriteEndElement() 方法创建含有下级子元素和属性的元素代码示例:BookWriter.WriteStartElement("book");BookWriter.WriteElementString("price", "19.95");BookWriter.WriteEndElement();输出:<book><price>19.95</price></book>4.编写属性代码示例:BookWriter.WriteStartElement("book");BookWriter.WriteAttributeString("price", "19.95");BookWriter.WriteEndElement();输出:<book price="19.95" />5.编写带有命名空间的元素使用WriteElementString()方法或WriteStartElement()方法编写带命名空间的元素代码示例:BookWriter.WriteStartElement("hr", "Name", "http://hrweb");BookWriter.WriteString("Nancy Davolio");BookWriter.WriteEndElement();输出:<hr:Name>Nancy Davolio</hr:Name>6.编写带有命名空间的属性使用WriteAttributeString()方法为元素添加带命名空间的属性public void WriteAttributeString (string prefix,string localName,string ns,string value)参数prefix:属性的命名空间前缀。
C#通过Get、Post、Soap调用WebService的方法
C#通过Get、Post、Soap调⽤WebService的⽅法实现代码来源于⽹络,我只是作了⼀些修改!using System;using System.Web;using System.Xml;using System.Collections;using ;using System.Text;using System.IO;using System.Xml.Serialization;/// <summary>/// 利⽤WebRequest/WebResponse进⾏WebService调⽤的类/// </summary>public class WebServiceHelper{//<webServices>// <protocols>// <add name="HttpGet"/>// <add name="HttpPost"/>// </protocols>//</webServices>private static Hashtable _xmlNamespaces = new Hashtable();//缓存xmlNamespace,避免重复调⽤GetNamespace/// <summary>/// 需要WebService⽀持Post调⽤/// </summary>public static XmlDocument QueryPostWebService(String URL, String MethodName, Hashtable Pars){HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(URL + "/" + MethodName);request.Method = "POST";request.ContentType = "application/x-www-form-urlencoded";SetWebRequest(request);byte[] data = EncodePars(Pars);WriteRequestData(request, data);return ReadXmlResponse(request.GetResponse());}/// <summary>/// 需要WebService⽀持Get调⽤/// </summary>public static XmlDocument QueryGetWebService(String URL, String MethodName, Hashtable Pars){HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(URL + "/" + MethodName + "?" + ParsToString(Pars));request.Method = "GET";request.ContentType = "application/x-www-form-urlencoded";SetWebRequest(request);return ReadXmlResponse(request.GetResponse());}/// <summary>/// 通⽤WebService调⽤(Soap),参数Pars为String类型的参数名、参数值/// </summary>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));}}/// <summary>/// 通⽤WebService调⽤(Soap)/// </summary>/// <param name="URL"></param>/// <param name="MethodName"></param>/// <param name="Pars"></param>/// <param name="XmlNs"></param>/// <returns></returns>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(Table);mgr.AddNamespace("soap", "/soap/envelope/");String RetXml = doc.SelectSingleNode("//soap:Body/*/*", mgr).InnerXml;doc2.LoadXml("<root>" + RetXml + "</root>");AddDelaration(doc2);return doc2;}/// <summary>/// 通过WebService的WSDL获取XML名称空间/// </summary>/// <param name="URL"></param>/// <returns></returns>private static string GetNamespace(String URL){HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL + "?WSDL");SetWebRequest(request);WebResponse response = request.GetResponse();StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);XmlDocument doc = new XmlDocument();doc.LoadXml(sr.ReadToEnd());sr.Close();return doc.SelectSingleNode("//@targetNamespace").Value;/// 动态⽣成SOP请求报⽂内容/// </summary>/// <param name="Pars"></param>/// <param name="XmlNs"></param>/// <param name="MethodName"></param>/// <returns></returns>private static byte[] EncodeParsToSoap(Hashtable Pars, String XmlNs, String MethodName){XmlDocument doc = new XmlDocument();doc.LoadXml("<soap:Envelope xmlns:xsi=\"/2001/XMLSchema-instance\" xmlns:xsd=\"/2001/XMLSchema\" xmlns:soap=\"/soap/envelope/\"></soap:Envelope>"); AddDelaration(doc);XmlElement soapBody = doc.CreateElement("soap", "Body", "/soap/envelope/");XmlElement soapMethod = doc.CreateElement(MethodName);soapMethod.SetAttribute("xmlns", XmlNs);foreach (string k in Pars.Keys){XmlElement soapPar = doc.CreateElement(k);soapPar.InnerXml = ObjectToSoapXml(Pars[k]);soapMethod.AppendChild(soapPar);}soapBody.AppendChild(soapMethod);doc.DocumentElement.AppendChild(soapBody);return Encoding.UTF8.GetBytes(doc.OuterXml);}/// <summary>/// 将对象转换成XML节点格式/// </summary>/// <param name="o"></param>/// <returns></returns>private static string ObjectToSoapXml(object o){XmlSerializer mySerializer = new XmlSerializer(o.GetType());MemoryStream ms = new MemoryStream();mySerializer.Serialize(ms, o);XmlDocument doc = new XmlDocument();doc.LoadXml(Encoding.UTF8.GetString(ms.ToArray()));if (doc.DocumentElement != null){return doc.DocumentElement.InnerXml;}else{return o.ToString();}}/// <summary>/// 设置WEB请求/// </summary>/// <param name="request"></param>private static void SetWebRequest(HttpWebRequest request){request.Credentials = CredentialCache.DefaultCredentials;request.Timeout = 10000;}/// <summary>/// 设置请求数据/// </summary>/// <param name="request"></param>/// <param name="data"></param>private static void WriteRequestData(HttpWebRequest request, byte[] data){request.ContentLength = data.Length;Stream writer = request.GetRequestStream();writer.Write(data, 0, data.Length);writer.Close();}/// <summary>/// 获取字符串的UTF8码字符串/// </summary>/// <param name="Pars"></param>/// <returns></returns>private static byte[] EncodePars(Hashtable Pars){return Encoding.UTF8.GetBytes(ParsToString(Pars));}/// <summary>/// 将Hashtable转换成WEB请求键值对字符串/// </summary>/// <param name="Pars"></param>/// <returns></returns>private static String ParsToString(Hashtable Pars){StringBuilder sb = new StringBuilder();foreach (string k in Pars.Keys){if (sb.Length > 0){sb.Append("&");}sb.Append(HttpUtility.UrlEncode(k) + "=" + HttpUtility.UrlEncode(Pars[k].ToString()));}return sb.ToString();}/// <summary>/// 获取Webservice响应报⽂XML/// </summary>/// <param name="response"></param>/// <returns></returns>private static XmlDocument ReadXmlResponse(WebResponse response){StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);String retXml = sr.ReadToEnd();sr.Close();XmlDocument doc = new XmlDocument();doc.LoadXml(retXml);return doc;/// 设置XML⽂档版本声明/// </summary>/// <param name="doc"></param>private static void AddDelaration(XmlDocument doc){XmlDeclaration decl = doc.CreateXmlDeclaration("1.0", "utf-8", null);doc.InsertBefore(decl, doc.DocumentElement);}}以上是在不引⽤WEB服务的条件下动态调⽤WEB服务⽅法,如果该服务地址不确定或后期有可能会变动,则采⽤上述这些⽅法会⽐较好,当然如果服务地址不会出现变更的情况下,可以在VS中直接引⽤WEB服务,然后就可调⽤⾃动⽣成的SOAPClient类来调⽤相应的WEB服务⽅法,这样就简单很多,如下:avar client = new SmsService.wmgwSoapClient(); //wmgwSoapClient就是引⽤WEB服务后⾃动⽣成的类string result = client.MongateSendSubmit(tuserId.Text, tpassword.Text, tpszMobis.Text, tpszMsg.Text, int.Parse(tiMobiCount.Text),tpszSubPort.Text, tMsgId.Text);。
.NET 访问JAVA的WEBSERVICE使用SOAP头
.NET 访问JAVA的WEBSERVICE使用SOAP头进来做的项目需要和JAVA的WebServices进行交互,其中访问WS的时候需要传入SOAP 头进行验证。
其中关键就是SOAP头内容。
由于JAVA的WS在.NET下生成的代理是没有SOAP 头的内容,所以需要手工修改代理类,达到可以传输SOAP头的目的。
1:修改代理类,建立SOAP头的对象:/// <remarks/>[piler.GeneratedCodeAttribute("System.Xml", "2.0.50727.3053")][System.SerializableAttribute()][System.Diagnostics.DebuggerStepThroughAttribute()][ponentModel.DesignerCategoryAttribute("code")][System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = true)] public partial class MySoapHeader : System.Web.Services.Protocols.SoapHeader{private string tokenValue;private System.Xml.XmlAttribute[] anyAttrField;/// <remarks/>//[XmlIgnoreAttribute]//[XmlAttribute("")][XmlTextAttribute()]public string TokenValue{get{return this.tokenValue;}set{this.tokenValue = value;}}/// <remarks/>[System.Xml.Serialization.XmlAnyAttributeAttribute()]public System.Xml.XmlAttribute[] AnyAttr{get{return this.anyAttrField;}set{this.anyAttrField = value;}}}2:修改代理类,添加一个SOAP对象:private mySoapHeader soapHeaderValue;public MySoapHeader SoapHeaderValue{get{return this.soapHeaderValue;}set{this.soapHeaderValue = value;}}3:在需要SOAP上方法上添加如下的代码:[System.Web.Services.Protocols.SoapHeaderAttribute("SoapHeaderValue")]public bool verifyWebserviceTest(){object[] results = this.Invoke("verifyWebserviceTest", new object[0]);return ((bool)(results[0]));}调用的时候使用如下代码:ArcWS.ManDispCmdSessionBeanService ws = new ARSSMonSite.ArcWS.ManDispCmdSessionBeanService();ArcWS.loginToken soapHeader = new ARSSMonSite.ArcWS.loginToken();soapHeader.TokenValue = "arsssongguixiang#19990101010101";ws.SoapHeaderValue = soapHeader;ws.verifyWebserviceTest();这样,就可以正确的向JAVS的WS传送SOAP头的信息。
.net framework调用webservice接口步骤
.net framework调用webservice接口步骤在.NETFramework中,调用Webservice接口是一项重要的任务,它允许我们与远程服务器进行通信,执行特定的操作并获取结果。
下面是一个详细的步骤指南,指导您如何在.NETFramework中调用Webservice接口:步骤1:添加Webservice引用首先,您需要将Webservice的URL添加到项目中,以便在代码中引用它。
您可以使用“添加服务引用”对话框来完成此操作。
在VisualStudio中,导航到“服务”选项卡,然后选择“添加服务引用”。
在URL框中,输入Webservice的URL地址,并确保选择正确的协议(如HTTP或SOAP)。
步骤2:创建代理类一旦您添加了Webservice引用,VisualStudio将为您生成一个代理类。
这个类将包含用于与Webservice交互的方法。
您可以使用这个代理类来调用Webservice的方法。
步骤3:编写代码调用Webservice方法接下来,您需要编写代码来调用Webservice的方法。
通常,这些方法使用SOAP(SimpleObjectAccessProtocol)格式,并返回XML数据。
您可以使用代理类中的方法来执行此操作。
以下是一个简单的示例代码,展示了如何调用一个名为“MyWebService”的Webservice的方法:```csharp//创建代理对象MyWebServiceClientclient=newMyWebServiceClient();//调用方法并获取结果stringresult=client.MyWebServiceMethod();```在这个示例中,“MyWebServiceClient”是自动生成的代理类,而“MyWebServiceMethod”是您要调用的Webservice方法。
您需要将实际方法的名称替换为适当的名称。
步骤4:处理返回结果一旦您调用了Webservice方法并获得了结果,您需要对其进行适当的处理。
C#.NET动态调用webservice的三种方式
动态调用webservice的三种方式多数时候我们通过"添加Web 引用..." 创建客户端代理类的方式调用WebService,但在某些情况下我们可能需要在程序运行期间动态调用一个未知的服务。
在.NET Framework 的System.Web.Services.Description 命名空间中有我们需要的东西。
具体步骤:1. 从目标URL 下载WSDL 数据。
2. 使用ServiceDescription 创建和格式化WSDL 文档文件。
3. 使用ServiceDescriptionImporter 创建客户端代理类。
4. 使用CodeDom 动态创建客户端代理类程序集。
5. 利用反射调用相关WebService 方法。
上述步骤需要引用如下四个名称空间:using System.Web.Services.Description; //WS的描述//以下几个用于根据描述动态生成代码并动态编译获取程序集using System.CodeDom;using Microsoft.CSharp;using System.CodeDom.piler;上述几个名称空间中包括如下几个重要的类:using System.Web.Services.Description下:ServiceDescription //WS描述ServiceDescriptionImporter //通过描述生成客户端代理类,特别注意其中的Style以下是MSDN对其的描述:XML Web services 的接口通常由Web 服务描述语言(WSDL) 文件来说明。
例如,若要获取有关使用localhost/service.asmx 处公开的 的Web 服务的WSDL 说明,只需导航到localhost/service.asmx?WSDL。
使用ServiceDescriptionImporter 类可以方便地将WSDL 说明中包含的信息导入到System.CodeDom.CodepileUnit 对象。
ASP.NET调用WebService服务的方法详解
调⽤WebService服务的⽅法详解本⽂实例讲述了调⽤WebService服务的⽅法。
分享给⼤家供⼤家参考,具体如下:⼀、WebService:WebService是以独⽴于平台的⽅式,通过标准的Web协议,可以由程序访问的应⽤程序逻辑单元。
(1)应⽤程序逻辑单元:web服务包括⼀些应⽤程序逻辑单元或者代码。
这些代码可以完成运算任务,可以完成数据库查询,可以完成计算机程序能够完成的任何⼯作。
(2)可由程序访问:当前⼤多是web站点都是通过浏览器由⼈⼯访问的,web服务可以由计算机程序来访问。
(3)标准的we协议:Web服务的所有协议都是基于⼀组标准的Web协议,如HTTP、XML、SOAP、WSDl、UDDI等(4)平台独⽴性:web服务可以在任何平台上实现。
因为标准协议不是由单个供应商专⽤的,它由⼤多数主要供应商⽀持。
SOAP(Simple Object Access Protocol,简单对象访问协议)协议:是⽤于交换XML编码信息的轻量级协议,SOAP协议是HTTP和XML协议的组合。
WSDL(Web Service Description Language,Web服务描述语⾔)是⽤XML⽂档来描述Web服务的标准,是Web服务的接⼝定义语⾔。
⼆、创建 WEB服务建⽴Web服务就是把⼀些信息或逻辑对其他计算机和客户公开,进⼀步说,就是从⽀持SOAP通信的类中建⽴⼀个或多个⽅法。
创建Web服务的步骤:(VS2008)⾸先,新建⼀个⽹站。
选择⽂件-------->新建--------->⽹站,打开“新建⽹站”对话框,选择“ web服务”模板。
确定后,创建成功。
创建好后,会⽣成Service.asmx,其代码隐藏⽂件Servece.cs位于App_Code⽂件中。
Web服务⽂件都使⽤扩展名.asmx。
发现在VS2010中,创建web服务是先新建⼀个⽹站,在选择添加新项,然后选择web 服务。
推荐使用.NET调用java编写的WebService方法
推荐使用.NET调用java编写的WebService方法如果.NET调用WebService,最简单的办法当然是直接添加WEB引用,然后自动产生代理类,但是在调用JAVA的WebService时并没有这么简单,特别是对于SoapHeader 的处理。
先说说的思路:1、先用soapUI进行测试,这个工具会自动生成调用某个方法的XML。
2、把soapUI生成的XML作为模版,自己也生成一个一模一样的XML并为参数节点赋好值。
3、将这个XML通过http直接发送给WebService。
4、接收返回的XML进行处理。
这样做最大的好处就是可以自己很轻松的控制XML格式,最开始的时候我是通过添加引用的方式去调用某个方法一直失败,但是用soapUI去测试这个方法又是可以成功调用的,折腾了半天,最后通过抓包的方式对发送的数据进行对比,发现两者发送的XML相差甚远,好了废话不说了,就拿一个小实例来演示这个过程吧。
首先,通过soapUI工具测试调用WebService里一个名为getPopCheckedInfo 的方法,生成的XML如下:soapUI生成的XML []<soapenv:Envelopexmlns:soapenv="/soap/envelope/"xmlns:ws="/"><soapenv:Header><wsse:Security soapenv:mustUnderstand="1"xmlns:wsse="/wss/2004/01/oasis-200401-wss-w ssecurity-secext-1.0.xsd"><wsse:UsernameToken wsu:Id="UsernameToken-2"xmlns:wsu="/wss/2004/01/oasis-200401-wss-ws security-utility-1.0.xsd"><wsse:Username>用户名</wsse:Username><wsse:PasswordType="/wss/2004/01/oasis-200401-wss-usernam e-token-profile-1.0#PasswordText">密码</wsse:Password><wsse:NonceEncodingType="/wss/2004/01/oasis-200401-wss -soap-message-security-1.0#Base64Binary">qTW5ajMAEp4o9BiSvcczNA==</ws se:Nonce><wsu:Created>2010-05-24T07:02:10.531Z</wsu:Created> </wsse:UsernameToken></wsse:Security></soapenv:Header><soapenv:Body><ws:getPopCheckedInfo><arg0>参数</arg0></ws:getPopCheckedInfo></soapenv:Body></soapenv:Envelope>上面三个用汉字标示的地方就是我们要修改赋值的地方,大家看到了吧,如果用添加引用自动生成代理类的方式,要产生这样格式的XML有多难控制了吧,但是如果全部用代码来生成也不是一件容易的事,个人用了一个比较巧妙的办法:在项目中添加一个名为“getPopCheckedInfo”的xml文件,将上面的XML粘贴上去,然后再将这个XML文件作为内嵌资源(在这个的文件属性里面的…生产操作‟选择…嵌入的资源‟),使用的时候直接加载这个XML文件,然后修改那3个节点的值就可以了(用户名和密码一般都预先确定的,也可以直接写在XML文件里,调用的时候就只要对那一个参数赋值了)。
基于SAP NETWEAVER创建并调用WEB SERVICE
基于SAP NETWEAVER创建并调用WEB SERVICE1创建一个WEB SERVICE本文档中的操作过程是在XI上完成的。
用一个可远程调用的Function Module创建WEB SERVICE有两种办法:1.1方法一1.进入Object Navigator(事务码SE80),选择任意一个包,在包名上点击右键,选择弹出菜单中的Create->Enterprise Service/Web Service->Web Service。
启动服务定义向导对话框。
2.点击Continue进入下一步。
3.在Service Definition中填入Web Service的名称,Short Text中填入简要说明,Endpoint Type中可以选择BAPI、Function Group、Function Module和Message Interface四种类型,本例中是以Function Module为例来创建Web Service的,所以Endpoint Type中选择Function Module。
完成后点击Continue继续。
程调用的Function Module是不能创建成Web Service的。
完成后点击Continue继续。
5.选择Web Service的安全设置,有两种设置可供选择:Basic Auth SOAP Profile:基于SOAP 1.1的无状态HTTP信息和简单验证。
Secure SOAP Profile:基于SOAP 1.1的无状态HTTP信息,强验证和传输保护。
本例中选择第一种方式。
将Release Services for Runtime勾上可以在创建Web Service的同时将其发布至SOAP Runtime。
如果现在不发布也可以在创建好Web Service并保存以后在事务WSCONFIG中发布。
6.点击Complete完成向导。
7.填入一个包名,创建好的Web Service将存放于此包下,点击按钮保存。
soap调用webservice接口 java 代码
soap调用webservice接口 java 代码SOAP(Simple Object Access Protocol)是一种基于XML的协议,在Web服务中用于在不同的应用程序之间进行通信。
在Java中,可以使用Java的标准库和一些开源工具来调用SOAP Web服务接口。
下面是一个使用Java代码调用SOAP Web服务接口的参考内容:1. 导入所需的库和类:```javaimport javax.xml.soap.*;import java.io.ByteArrayOutputStream;import java.io.InputStream;import .HttpURLConnection;import .URL;```2. 创建SOAP消息,并设置消息的内容:```java// 创建SOAP消息工厂MessageFactory messageFactory = MessageFactory.newInstance(); SOAPMessage soapMessage = messageFactory.createMessage(); // 创建SOAP消息的部分SOAPPart soapPart = soapMessage.getSOAPPart();// 创建SOAP消息的EnvelopeSOAPEnvelope envelope = soapPart.getEnvelope();// 创建SOAP消息的BodySOAPBody body = envelope.getBody();// 在Body中添加要调用的方法和参数QualifiedName qualifiedName = new QName("<命名空间>", "<方法名>");SOAPBodyElement bodyElement =body.addBodyElement(qualifiedName);// 如果需要添加参数值,可以使用以下方式://bodyElement.addChildElement("参数名").addTextNode("参数值");```3. 创建SOAP连接,并发送SOAP消息:```java// 创建SOAP连接SOAPConnectionFactory connectionFactory = SOAPConnectionFactory.newInstance();SOAPConnection connection =connectionFactory.createConnection();// 设置目标SOAP Web服务的URLURL url = new URL("<Web服务的URL>");// 发送SOAP消息,并接收响应SOAPMessage response = connection.call(soapMessage, url);```4. 解析SOAP响应,并获取返回的数据:```java// 获取SOAP响应的Body部分SOAPBody responseBody = response.getSOAPBody();// 获取返回结果的值// 可以根据需要来解析和处理返回的数据NodeList nodeList = responseBody.getElementsByTagName("<元素名>");String result = nodeList.item(0).getTextContent();```5. 关闭SOAP连接:```javaconnection.close();```以上是一个基本的SOAP调用的参考代码,实际使用时,需要根据具体的SOAP接口定义和要调用的方法及参数进行调整。
基于soap协议访问webservice方法的过程
基于soap协议访问webservice方法的过程下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!基于SOAP协议访问Web服务方法的过程在当今互联网时代,Web服务成为了不可或缺的一部分,它们提供了一种跨平台、跨语言的通信方式,使得不同系统之间可以进行数据交换和资源共享。
.net framework调用webservice接口步骤
.net framework调用webservice接口步骤摘要: Framework 简介2.WebService 接口概述3.调用WebService 接口的步骤a.创建WebService 引用b.调用WebService 方法c.处理返回结果正文:.NET Framework 是一个微软开发的软件框架,它提供了许多用于创建Windows 应用程序和Web 应用程序的功能和工具。
在.NET Framework 中,WebService 是一种用于在不同网络设备之间共享数据和服务的应用程序接口。
调用WebService 接口是.NET Framework 中的一项重要功能,可以帮助开发人员轻松地实现跨平台、跨语言的通信。
要调用WebService 接口,需要遵循以下步骤:1.创建WebService 引用首先,需要在.NET Framework 项目中创建一个对WebService 的引用。
这一步可以通过在Visual Studio 中添加现有WebService 的引用或创建一个新的WebService 引用来实现。
在创建引用时,需要提供WebService 的地址和访问凭据(如用户名和密码)。
2.调用WebService 方法一旦创建了WebService 引用,就可以使用它来调用WebService 中的方法。
调用方法时,需要使用WebService 引用作为前缀,例如:```myWebService.MyMethod(参数1, 参数2);```其中,`myWebService`是WebService 引用,`MyMethod`是要调用的方法,`参数1`和`参数2`是传递给方法的参数。
3.处理返回结果当WebService 方法返回结果时,.NET Framework 会自动将其转换为适当的类型并返回给调用方。
调用方需要根据返回结果的类型来处理它。
例如,如果方法返回一个字符串,可以将其存储在一个变量中或将其显示在界面上。
soapclient webservice 方法
SoapClient是一个PHP提供的类,可以用于通过SOAP协议与远程Web服务进行通信。
在使用SoapClient来调用Web服务的方法时,需要了解一些关键知识和注意事项。
一、了解SoapClient和WebService1. SoapClient是一个PHP中提供的类,可以用于创建SOAP客户端,通过SOAP协议与远程Web服务进行通信。
2. Web服务是一个通过网络进行通信的软件系统,通常使用SOAP协议进行数据交换。
二、使用SoapClient调用WebService方法1. 创建SoapClient对象在PHP中,可以使用new关键字来创建SoapClient对象,如下所示:$client = new SoapClient("");其中,是目标Web服务的WSDL(Web服务描述语言)位置区域。
2. 调用Web服务方法通过SoapClient对象,可以使用__soapCall方法来调用远程Web 服务的方法,如下所示:$result = $client->__soapCall("methodName",array($parameters));其中,methodName是目标Web服务中的方法名,$parameters是调用方法所需的参数。
三、注意事项1. 错误处理在调用Web服务方法时,需要对异常和错误进行适当的处理。
可以使用try...catch语句来捕获SoapFault异常,进行错误处理和日志记录。
2. 安全性在与远程Web服务进行通信时,需要考虑数据的安全性和隐私保护。
可以通过SoapClient的一些安全配置来保护通信数据的安全性。
3. 性能优化在调用Web服务方法时,需要考虑性能优化的问题。
可以对SoapClient对象进行一些配置,如设置超时时间、设置缓存等,以提高通信效率。
四、示例代码```php<?php// 创建SoapClient对象$client = new SoapClient("");// 调用Web服务方法try {$result = $client->__soapCall("methodName",array($parameters));// 处理调用结果var_dump($result);} catch (SoapFault $e) {// 处理异常echo "Error: " . $e->getMessage();}```以上就是使用SoapClient调用WebService方法的一些关键知识和注意事项。
Asp.NETCore如何调用WebService的方法
Core如何调⽤WebService的⽅法0.使⽤背景因为现在的项⽬都是基于 .NET Core 的,但是某些需要调⽤第三⽅的 WebService 服务,故有了此⽂章。
其基本思路是通过微软提供的 Svcutil ⼯具⽣成代理类,然后通过 System.ServiceModel 来调⽤代理类所提供的对象与⽅法。
1.配置准备1.1 新建并编辑项⽬⾸先新建⼀个新的 .NET Core 控制台程序,通过命令⾏窗⼝或者 Powershell 执⾏以下命令新建⼀个项⽬。
dotnet new console然后编辑项⽬⽂件 WebServiceConsole.csproj ,并在其中加⼊以下内容:<ItemGroup><DotNetCliToolReference Include="dotnet-svcutil" Version="1.0.*" /></ItemGroup>这样最终 WebServiceConsole.csproj 的内容会是这样⼦的。
<Project Sdk=".Sdk"><PropertyGroup><OutputType>Exe</OutputType><TargetFramework>netcoreapp2.1</TargetFramework></PropertyGroup><ItemGroup><DotNetCliToolReference Include="dotnet-svcutil" Version="1.0.*" /></ItemGroup></Project>继续打开命令⾏窗⼝或者 Powershell 执⾏以下命令,还原项⽬⽂件的包。
C#使用SOAP调用WebService
C#使⽤SOAP调⽤WebService程序代码using System;using System.IO;using ;using System.Text;namespace ConsoleApplication1{class Program{static void Main(string[] args){//构造soap请求信息StringBuilder soap = new StringBuilder();soap.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");soap.Append("<soap:Envelope xmlns:soap=\"/soap/envelope/\"xmlns:xsd=\"/2001/XMLSchema\" xmlns:xsi=\"/2001/XMLSchema-instance\">");soap.Append("<soap:Body>");soap.Append("<getWeather xmlns=\"/\">");soap.Append("<theCityCode>2210</theCityCode>");soap.Append("<theUserID></theUserID>");soap.Append("</getWeather>");soap.Append("</soap:Body>");soap.Append("</soap:Envelope>");//发起请求Uri uri = new Uri("/WebServices/WeatherWS.asmx");WebRequest webRequest = WebRequest.Create(uri);webRequest.ContentType = "text/xml; charset=utf-8";webRequest.Method = "POST";using (Stream requestStream = webRequest.GetRequestStream()){byte[] paramBytes = Encoding.UTF8.GetBytes(soap.ToString());requestStream.Write(paramBytes, 0, paramBytes.Length);}//响应WebResponse webResponse = webRequest.GetResponse();using (StreamReader myStreamReader = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8)){Console.WriteLine(myStreamReader.ReadToEnd());}Console.ReadKey();}}}返回结果:引⽤内容<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="/soap/envelope/"xmlns:xsi="/2001/XMLSchema-instance" xmlns:xsd="/2001/XMLSchema"><soap:Body><getWeatherResponse xmlns="/"><getWeatherResult><string>福建福州</string><string>福州</string><string>2210</string><string>2010/01/21 15:42:15</string><string>今⽇天⽓实况:⽓温:12.5℃;风向/风⼒:东南风 4级;湿度:94%;⽓压:1011.9hPa</string><string>空⽓质量:良;紫外线强度:暂⽆</string><string>穿⾐指数:建议着薄型套装或⽜仔衫裤等春秋过渡装。
JAVA与.NET的相互调用——通过Web服务实现相互调用
JAVA与.NET的相互调用——通过Web服务实现相互调用JAVA与.NET是现今世界竞争激烈的两大开发媒体,两者语言有很多相似的地方。
而在很多大型的开发项目里面,往往需要使用两种语言进行集成开发。
而很多的开发人员都会偏向于其中一种语言,在使用集成开发的时候对另一种语言感觉到畏惧。
在这里在下向各位介绍一下,JAVA与.NET相互调用的例子。
下面的介绍主要包括三方面:一是通过常用Web 服务进行相互调用,二是使用TCP/IP套接字进行相互调用,三是使用Remoting进行相互调用。
在这章里面先为大家介绍一下最简单,最常用的Web服务相互调用方式。
首先说一下Web 服务的来源,Web服务是一种新的Web应用程序分支,可以执行从简单的请求到复杂商务处理等任何功能。
一旦部署以后,其他Web服务应用程序可以发现并调用它部署的服务。
Web Service是一种应用程序,它可以使用标准的互联网协议,像超文件传输协议(HTTP)、简单对象访问协议(SOAP)、XML等,将功能纲领性地体现在互联网和企业内部网上,Web 服务被视作是Web上的组件编程。
Web服务必须提供一套标准的类型系统,用于沟通不同平台、编程语言和组件模型中的不同类型系统。
XML和XSD可扩展的标记语言XML是Web Service平台中表示数据的基本格式。
除了易于建立和易于分析外,XML主要的优点在于它既与平台无关,又与厂商无关。
XML是由万维网协会(W3C)创建,W3C制定的XML SchemaXSD定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。
Web Service平台是用XSD来作为数据类型系统的。
当你用某种语言如JAVA、C#来构造一个Web Service时,为了符合Web Service标准,所有你使用的数据类型都必须被转换为XSD 类型。
如想让它使用在不同平台和不同软件的不同组织间传递,还需要通过SOAP协议将它包装起来。
JAVA与.NET的相互调用——通过Web服务实现相互调用
JAVA与.NET是现今世界竞争激烈的两大开发媒体,两者语言有很多相似的地方。
而在很多大型的开发项目里面,往往需要使用两种语言进行集成开发。
而很多的开发人员都会偏向于其中一种语言,在使用集成开发的时候对另一种语言感觉到畏惧。
在这里在下向各位介绍一下,JAVA与.NET相互调用的例子。
下面的介绍主要包括三方面:一是通过常用Web 服务进行相互调用,二是使用TCP/IP套接字进行相互调用,三是使用Remoting进行相互调用。
在这章里面先为大家介绍一下最简单,最常用的Web服务相互调用方式。
首先说一下Web 服务的来源,Web服务是一种新的Web应用程序分支,可以执行从简单的请求到复杂商务处理等任何功能。
一旦部署以后,其他Web服务应用程序可以发现并调用它部署的服务。
Web Service是一种应用程序,它可以使用标准的互联网协议,像超文件传输协议(HTTP)、简单对象访问协议(SOAP)、XML等,将功能纲领性地体现在互联网和企业内部网上,Web 服务被视作是Web上的组件编程。
Web服务必须提供一套标准的类型系统,用于沟通不同平台、编程语言和组件模型中的不同类型系统。
XML和XSD可扩展的标记语言XML是Web Service平台中表示数据的基本格式。
除了易于建立和易于分析外,XML主要的优点在于它既与平台无关,又与厂商无关。
XML是由万维网协会(W3C)创建,W3C制定的XML SchemaXSD定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。
Web Service平台是用XSD来作为数据类型系统的。
当你用某种语言如JAVA、C#来构造一个Web Service时,为了符合Web Service标准,所有你使用的数据类型都必须被转换为XSD类型。
如想让它使用在不同平台和不同软件的不同组织间传递,还需要通过SOAP协议将它包装起来。
SOAPSOAP即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML编码信息的轻量级协议。
web service的几种调用方法
一、利用jdk web服务api实现,这里使用基于 SOAP message 的 Web 服务1.首先建立一个Web services EndPoint:java 代码[dai ma]package Hello;import javax.jws.WebService;import javax.jws.WebMethod;import javax.xml.ws.Endpoint;@WebServicepublic class Hello {@WebMethodpublic String hello(String name) {return "Hello, " + name + "\n";}public static void main(String[] args) {// create and publish an endpointHello hello = new Hello();Endpoint endpoint = Endpoint.publish(" http://localhost:8080/hello ", hello);}}package Hello;import javax.jws.WebService;import javax.jws.WebMethod;import javax.xml.ws.Endpoint;@WebServicepublic class Hello {@WebMethodpublic String hello(String name) {return "Hello, " + name + "\n";}public static void main(String[] args) {// create and publish an endpointHello hello = new Hello();Endpoint endpoint = Endpoint.publish(" http://localhost:8080/hello ", hello);}}2.使用 apt 编译[bian yi] Hello.java(例:apt -d [存放编译[bian yi]后的文件[wen jian]目录[wen jian mu lu]] Hello.java ) ,会生成 jaws目录3.使用java Hello.Hello运行[yun hang],然后将浏览[liu lan]器[liu lan qi]指向[zhi xiang] http://localhost:8080/hello?wsdl 就会出现下列显示[xian shi]4.使用wsimport 生成客户[ke hu]端使用如下:wsimport -p . -keep http://localhost:8080/hello?wsdl5.客户[ke hu]端程序:Java 代码[dai ma]class HelloClient{public static void main(String args[]) {HelloService service = new HelloService();Hello helloProxy = service.getHelloPort();String hello = helloProxy.hello("你好");System.out.println(hello);}}class HelloClient{public static void main(String args[]) {HelloService service = new HelloService();Hello helloProxy = service.getHelloPort();String hello = helloProxy.hello("你好");System.out.println(hello);}}二、使用xfire,我这里使用的是myeclipse集成[ji cheng]的xfire进行测试的利用xfire开发WebService,可以有三种方法[fang fa]:1一种是从javabean 中生成;2 一种是从wsdl文件[wen jian]中生成;3 还有一种是自己建立webservice步骤如下:用myeclipse建立webservice工程,目录结构[jie gou]如下:首先建立webservice接口[jie kou],代码[dai ma]如下:Java代码[dai ma]package com.myeclipse.wsExample;//Generated by MyEclipsepublic interface IHelloWorldService {public String example(String message);}package com.myeclipse.wsExample;//Generated by MyEclipsepublic interface IHelloWorldService {public String example(String message);}Java代码[dai ma]package com.myeclipse.wsExample;//Generated by MyEclipsepublic class HelloWorldServiceImpl implements IHelloWorldService { public String example(String message) {return message;}}package com.myeclipse.wsExample;//Generated by MyEclipsepublic class HelloWorldServiceImpl implements IHelloWorldService { public String example(String message) {return message;}}修改[xiu gai]service.xml 文件[wen jian],加入以下代码[dai ma]:Xml代码[dai ma]<service><name>HelloWorldService</name><serviceClass>com.myeclipse.wsExample.IHelloWorldService</serviceClass><implementationClass>com.myeclipse.wsExample.HelloWorldServiceImpl</implementationClass><style>wrapped</style><use>literal</use><scope>application</scope></service><service><name>HelloWorldService</name><serviceClass>com.myeclipse.wsExample.IHelloWorldService</serviceClass><implementationClass>com.myeclipse.wsExample.HelloWorldServiceImpl</implementationClass><style>wrapped</style><use>literal</use><scope>application</scope></service>把整个项目[xiang mu]部署到tomcat 服务器[fu wu qi] 中,打开浏览[liu lan]器[liu lan qi],输入[shu ru] http://localhost:8989/HelloWorld/services/HelloWorldService?wsdl客户[ke hu]端实现如下:Java代码[dai ma]package com.myeclipse.wsExample.client;import .MalformedURLException;import .URL;import org.codehaus.xfire.XFireFactory;import org.codehaus.xfire.client.Client;import org.codehaus.xfire.client.XFireProxyFactory;import org.codehaus.xfire.service.Service;import org.codehaus.xfire.service.binding.ObjectServiceFactory;import com.myeclipse.wsExample.IHelloWorldService;public class HelloWorldClient {public static void main(String[] args) throws MalformedURLException, Exception { // TODO Auto-generated method stubService s=new ObjectServiceFactory().create(IHelloWorldService.class);XFireProxyFactory xf=new XFireProxyFactory(XFireFactory.newInstance().getXFire());String url=" http://localhost:8989/HelloWorld/services/HelloWorldService ";try{IHelloWorldService hs=(IHelloWorldService) xf.create(s,url);String st=hs.example("zhangjin");System.out.print(st);}catch(Exception e){e.printStackTrace();}}}package com.myeclipse.wsExample.client;import .MalformedURLException;import .URL;import org.codehaus.xfire.XFireFactory;import org.codehaus.xfire.client.Client;import org.codehaus.xfire.client.XFireProxyFactory;import org.codehaus.xfire.service.Service;import org.codehaus.xfire.service.binding.ObjectServiceFactory;import com.myeclipse.wsExample.IHelloWorldService;public class HelloWorldClient {public static void main(String[] args) throws MalformedURLException, Exception { // TODO Auto-generated method stubService s=new ObjectServiceFactory().create(IHelloWorldService.class);XFireProxyFactory xf=new XFireProxyFactory(XFireFactory.newInstance().getXFire());String url=" http://localhost:8989/HelloWorld/services/HelloWorldService ";try{IHelloWorldService hs=(IHelloWorldService) xf.create(s,url);String st=hs.example("zhangjin");System.out.print(st);}catch(Exception e){e.printStackTrace();}}}这里再说点题外话,有时候我们知道一个wsdl地址[di zhi],比如想用java客户[ke hu]端引用[yin yong].net 做得webservice,使用myeclipse引用[yin yong],但是却出现无法通过验证[yan zheng]的错误[cuo wu],这时我们可以直接在类中引用[yin yong],步骤如下:Java代码[dai ma]public static void main(String[] args) throws MalformedURLException, Exception { // TODO Auto-generated method stubService s=new ObjectServiceFactory().create(IHelloWorldService.class);XFireProxyFactory xf=newXFireProxyFactory(XFireFactory.newInstance().getXFire());//远程调用[tiao yong].net开发的webserviceClient c=new Client(new URL(" /webservices/qqOnlineWebService.asmx?wsdl "));Object[] o=c.invoke("qqCheckOnline", new String[]{"531086641","591284436"});//调用[tiao yong].net本机开发的webserviceClient c1=new Client(new URL(" http://localhost/zj/Service.asmx?wsdl "));Object[] o1=c1.invoke("HelloWorld",new String[]{});}public static void main(String[] args) throws MalformedURLException, Exception {// TODO Auto-generated method stubService s=new ObjectServiceFactory().create(IHelloWorldService.class);XFireProxyFactory xf=new XFireProxyFactory(XFireFactory.newInstance().getXFire());//远程调用[tiao yong].net开发的webserviceClient c=new Client(new URL(" /webservices/qqOnlineWebService.asmx?wsdl "));Object[] o=c.invoke("qqCheckOnline", new String[]{"531086641","591284436"});//调用[tiao yong].net本机开发的webserviceClient c1=new Client(new URL(" http://localhost/zj/Service.asmx?wsdl "));Object[] o1=c1.invoke("HelloWorld",new String[]{});}三、使用axis1.4调用[tiao yong]webservice方法[fang fa]前提[qian ti]条件[tiao jian]:下载[xia zai] axis1.4包和tomcat 服务器[fu wu qi] ,并将axis文件[wen jian]夹复制到tomcat 服务器[fu wu qi] 的webapp文件[wen jian]夹中这里我就说一下最简单的方法[fang fa]:首先建立一个任意的java类(例如:HelloWorld.java),复制到axis文件[wen jian]夹下,将其扩展[kuo zhan]名改为jws,然后重新启动[qi dong][zhong xin qi dong]tomcat,在浏览[liu lan]器[liu lan qi]中输入[shu ru] http://localhost:8989/axis/HelloWorld.jws?wsdl ,就会得到一个wsdl文件[wen jian],其客户[ke hu]端调用[tiao yong]方法[fang fa]如下:Java 代码[dai ma]import javax.xml.rpc.Service;import javax.xml.rpc.ServiceException;import javax.xml.rpc.ServiceFactory;import .MalformedURLException;import .URL;import java.rmi.RemoteException;import space.QName;public class TestHelloWorld {public static void main(String[] args) throws MalformedURLException, ServiceException, RemoteException {// TODO Auto-generated method stubString wsdlUrl =" http://localhost:8989/axis/HelloWorld.jws?wsdl ";String nameSpaceUri =" http://localhost:8989/axis/HelloWorld.jws ";String serviceName = "HelloWorldService";String portName = "HelloWorld";ServiceFactory serviceFactory = ServiceFactory.newInstance();Service afService =serviceFactory.createService(new URL(wsdlUrl),new QName(nameSpaceUri, serviceName));HelloWorldInterface proxy = (HelloWorldInterface)afService.getPort(new QName(nameSpaceUri, portName),HelloWorldInterface.class);System.out.println("return value is "+proxy.getName("john") ) ;}}import javax.xml.rpc.Service;import javax.xml.rpc.ServiceException;import javax.xml.rpc.ServiceFactory;import .MalformedURLException;import .URL;import java.rmi.RemoteException;import space.QName;public class TestHelloWorld {public static void main(String[] args) throws MalformedURLException,ServiceException, RemoteException {// TODO Auto-generated method stubString wsdlUrl =" http://localhost:8989/axis/HelloWorld.jws?wsdl ";String nameSpaceUri =" http://localhost:8989/axis/HelloWorld.jws ";String serviceName = "HelloWorldService";String portName = "HelloWorld";ServiceFactory serviceFactory = ServiceFactory.newInstance();Service afService =serviceFactory.createService(new URL(wsdlUrl),new QName(nameSpaceUri, serviceName));HelloWorldInterface proxy = (HelloWorldInterface)afService.getPort(new QName(nameSpaceUri, portName),HelloWorldInterface.class);System.out.println("return value is "+proxy.getName("john") ) ;}}四、使用axis2开发webservice(这里首先感谢李宁老师)使用axis2 需要先下载[xia zai]axis2-1.4.1-bin.zipaxis2-1.4.1-war.zip/axis2/同理,也需要将axis2复制到webapp目录中在axis2中部署webservice有两种方法[fang fa],第一种是pojo方式,这种方式比较简单,但是有一些限制,例如部署的类不能加上包名第二种方式是利用xml发布webservice,这种方法[fang fa]比较灵活,不需要限制类的声明[sheng ming]下面分别说明[shuo ming]使用方法[fang fa]:1.pojo方式:在Axis2中不需要进行任何的配置[pei zhi],就可以直接将一个简单的POJO 发布成WebService。
基于Asp.net的web service调用
基于的web service调用
刘艾侠
【期刊名称】《科技信息》
【年(卷),期】2010(002)023
【摘要】在internet高速发展的今天,各站点间信息的共享变得越来越重要.而共享信息总是面临着安全性的问题.web service可以提供一个数据库访问的接口,以达到安全访问的数据库的目的.本文以access创建数据库,C#为编程语言,就怎样在中调用web service来共享数据给出了具体的方法.
【总页数】2页(P908,1222)
【作者】刘艾侠
【作者单位】宝鸡职业技术学院,陕西,宝鸡,721013
【正文语种】中文
【相关文献】
AJAX中的Web Services调用 [J], 王健南
2.基于webservices的教学管理系统调用效率的研究 [J], 成桂玲
AJAX调用Web Service实现页面无刷新的方法 [J], 李海波;白光远
AJAX调用Web Service实现页面无刷新的方法 [J], 李海波;白光远
5.在C/C++环境下基于gSoap实现Web Services调用 [J], 罗学刚
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
使用.NET类编写SOAP协议调用Web服务简介:使用.NET类编写SOAP消息,SOAP消息中包含用户的用户帐号,用户密码和帐号ID。
使用HttpWebRequest类发送SOAP请求,请求远程服务器上Web服务程序(客户帐户信息),并使用HttpWebResponse类获取服务响应。
知识点:命名空间:System.Xml创建XML文档的类:XmlTextWriter1.创建XmlTextWriter 对象,设置用Tab键缩进代码示例:XmlTextWriter BookWriter = new XmlTextWriter( @"\catalog\books.xml", Encoding.UTF8);BookWriter.Formatting = Formatting.Indented;2.编写XML文档的根元素使用WriteStartDocument()方法和WriteEndDocument()方法创建XML声明使用WriteStartElement()方法和WriteEndElement()方法创建根元素代码示例:BookWriter.WriteStartDocument();BookWriter.WriteStartElement("books");// 其他元素BookWriter.WriteEndElement();BookWriter.WriteEndDocument();输出:<?xml version="1.0" encoding="utf-8" ?><books><!-- write other elements here --></books>3.编写元素使用WriteElementString()方法创建不包含子元素和属性的元素代码示例:BookWriter.WriteElementString("price", "19.95");输出:<price>19.95</price>使用WriteStartElement()和WriteEndElement() 方法创建含有下级子元素和属性的元素代码示例:BookWriter.WriteStartElement("book");BookWriter.WriteElementString("price", "19.95");BookWriter.WriteEndElement();输出:<book><price>19.95</price></book>4.编写属性代码示例:BookWriter.WriteStartElement("book");BookWriter.WriteAttributeString("price", "19.95");BookWriter.WriteEndElement();输出:<book price="19.95" />5.编写带有命名空间的元素使用WriteElementString()方法或WriteStartElement()方法编写带命名空间的元素代码示例:BookWriter.WriteStartElement("hr", "Name", "http://hrweb");BookWriter.WriteString("Nancy Davolio");BookWriter.WriteEndElement();输出:<hr:Name>Nancy Davolio</hr:Name>6.编写带有命名空间的属性使用WriteAttributeString()方法为元素添加带命名空间的属性public void WriteAttributeString (string prefix,string localName,string ns,string value)参数prefix:属性的命名空间前缀。
localName:属性的本地名称。
ns:属性的命名空间URI。
value:属性值。
此方法写出具有用户定义的命名空间前缀的属性,并将其与给定的命名空间进行关联。
如果前缀为“xmlns”,则此方法也将此当做命名空间声明对待,并将声明的前缀与给定属性值中提供的命名空间URI 进行关联。
在这种情况下,ns参数可以为空引用。
代码示例:xtw.WriteStartElement("bookstore");// Write the namespace declarationxtw.WriteAttributeString( "xmlns", "bk", null, "urn:samples");xtw.WriteStartElement("book");// Lookup the prefix and then write the ISBN attribute.string prefix = xtw.LookupPrefix("urn:samples");xtw.WriteStartAttribute(prefix, "ISBN", "urn:samples");xtw.WriteString("1-861003-78");xtw.WriteEndAttribute();// Write the style elementxtw.WriteStartElement(prefix, "style", "urn:samples");xtw.WriteString("hardcover");xtw.WriteEndElement();// Write the end tag for the book and root elementsxtw.WriteEndElement();xtw.WriteEndElement();输出:<bookstore xmlns:bk="urn:samples"><book bk:ISBN="1-861003-78"><bk:style>hardcover</bk:style></book></bookstore>任务:演示——使用.NET类构架SOAP协议调用Web服务第1步:建立BulidSOAPMessage类,添加静态方法SOAPMessage构建SOAP消息。
using System;using System.IO;using System.Xml;using System.Text;/// <summary>/// BulidSOAPMessage 的摘要说明/// </summary>public class BulidSOAPMessage{public static string SOAPMessage(string userID, string password, string acctID){try{string str=null;using( MemoryStream mStream = new MemoryStream()) //创建内存流对象{using(XmlTextWriter xtw = new XmlTextWriter(mStream,Encoding.UTF8)) //创建写内存流对象{//定义前缀字符串string xsi = "/2001/XMLSchema-instance";string xsd = "/2001/XMLSchema";string soap = "/soap/envelope/";string namespaceurl = "/";//书写缩进的XML文档,设置用tab键缩进xtw.Formatting = Formatting.Indented;//书写版本为“1.0”,并具有独立属性的XML声明,即<?xml version='1.0' encodeding='utf-8'?>xtw.WriteStartDocument();//书写开始标记"Envelope",并与给定的命名空间"/soap/envelope/"和前缀"soap"关联xtw.WriteStartElement("soap", "Envelope", soap);//声明属性xmlns:xsi="/2001/XMLSchema-instance"xtw.WriteAttributeString("xmlns", "xsi", null, xsi);//声明属性xmlns:xsd="/2001/XMLSchema"xtw.WriteAttributeString("xmlns", "xsd", null, xsd);//声明属性xmlns:soap="/soap/envelope/"xtw.WriteAttributeString("xmlns", "soap", null, soap);//声明复合元素“Header”,并与"soap"前缀关联xtw.WriteStartElement("Header", soap);//声明“Header”的子元素"WoodgroveAuthInfo",与命名空间nsurl 关联,不指定前缀xtw.WriteStartElement(null, "WoodgroveAuthInfo", namespaceurl);//声明"WoodgroveAuthInfo"元素内包含的基本元素"Username"和"Password",并赋值xtw.WriteElementString("Username", userID);xtw.WriteElementString("Password", password);//结束"WoodgroveAuthInfo"和“Header”的声明xtw.WriteEndElement();xtw.WriteEndElement();//声明"Body"元素,并与soap命名空间关联xtw.WriteStartElement("Body", soap);//声明"Body"元素下的嵌套子元素"GetAccount",关联Web服务给定的命名空间,不设前缀xtw.WriteStartElement(null, "GetAccount", namespaceurl);//声明"GetAccount"元素下嵌套的基本元素"acctID",并赋值xtw.WriteElementString("acctID", acctID);//结束"GetAccount"和"Body"声明xtw.WriteEndElement();xtw.WriteEndElement();//结束"Envelope"声明xtw.WriteEndDocument();//将缓冲区中数据刷新到基础流,并同时刷新基础流xtw.Flush();//将基础数据流转换为字符串str = MemStreamToString(mStream);}}return str;}catch{return null;}}private static string MemStreamToString(MemoryStream mStream){//将基础流的数据转换为无符号的字节数组byte[] buffer = mStream.GetBuffer();//创建把字节序列转换为字符序列的解码器Decoder d = Encoding.UTF8.GetDecoder();//创建字符缓冲区,用于存放解码后的字符序列char[] chars = new char[buffer.Length];//使用解码器将字节数组转换为字符数组d.GetChars(buffer, 3, buffer.Length - 3, chars, 0);//将字符数组转换为字符串string str = new String(chars);return str;}}第2步:创建处理类SOAPMessageHandler,使用SOAP协议调用Web服务using System;using ;using System.IO;/// <summary>/// SOAPMessageHandler 的摘要说明/// </summary>public class SOAPMessageHandler{public string SOAPResponse{get { return _privateSOAPResponse; }}private string _privateSOAPResponse = null;private string _privateSOAPMessage = null;public SOAPMessageHandler(string userID, string password, string acctID,string uri) {//构建SOAP请求消息_privateSOAPMessage = BulidSOAPMessage.SOAPMessage(userID, password, acctID);if (_privateSOAPMessage != null){_privateSOAPResponse=this.GetSOAPMessage(uri,_privateSOAPMessage);}}private string GetSOAPMessage(string uri,string content){HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(uri));request.ContentType = "text/xml;charset=utf-8";request.ContentLength = _privateSOAPMessage.Length;request.Method = "POST";request.Headers.Add("/GetAccount");using (StreamWriter sw = new StreamWriter(request.GetRequestStream())){sw.Write(content);}string str=null;using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()){using(StreamReader reader = new StreamReader(response.GetResponseStream())){str = reader.ReadToEnd();}}return str;}}。