1.这是jax-ws方式访问web 服务的时候生成的一个 soap消息,那么 要是我们自己可以创建这样的一个消息,我们应该就可以完成服务的请求
- <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="http://soap.xiongpan.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <q0:add> <a>1</a> <b>2</b> </q0:add> </soapenv:Body> </soapenv:Envelope>
先看看 SOAPMessage 的一个概括图 记清楚这个图 我们就很好写代码了
服务端发布的wsdl的如下
This XML file does not appear to have any style information associated with it. The document tree is shown below. <!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.6 in JDK 6. --> <!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.6 in JDK 6. --> <definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://soap.xiongpan.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://soap.xiongpan.com/" name="ServerUtilImplService"> <types> <xsd:schema> <xsd:import namespace="http://soap.xiongpan.com/" schemaLocation="http://localhost:9595/ns?xsd=1"/> </xsd:schema> </types> <message name="add"> <part name="parameters" element="tns:add"/> </message> <message name="addResponse"> <part name="parameters" element="tns:addResponse"/> </message> <portType name="ServerUtil"> <operation name="add"> <input message="tns:add"/> <output message="tns:addResponse"/> </operation> </portType> <binding name="ServerUtilImplPortBinding" type="tns:ServerUtil"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> <operation name="add"> <soap:operation soapAction=""/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="ServerUtilImplService"> <port name="ServerUtilImplPort" binding="tns:ServerUtilImplPortBinding"> <soap:address location="http://localhost:9595/ns"/> </port> </service> </definitions>
客户端用soap的方式去访问
package com.xiongpan.soap; import java.net.URL; import javax.xml.namespace.QName; import javax.xml.soap.MessageFactory; import javax.xml.soap.SOAPBody; import javax.xml.soap.SOAPBodyElement; import javax.xml.soap.SOAPEnvelope; import javax.xml.soap.SOAPMessage; import javax.xml.soap.SOAPPart; import javax.xml.ws.Dispatch; import javax.xml.ws.Service; public class ClientTest { public static void main(String[] args) throws Exception{ ///创建一个消息工厂 MessageFactory factory=MessageFactory. newInstance(); ///创建一个消息 SOAPMessage message= factory.createMessage(); //获得SOAPPART SOAPPart part= message.getSOAPPart(); //获得信封(envelope) SOAPEnvelope envelope=part.getEnvelope(); //获得SOAP的body SOAPBody body= envelope.getBody(); //创建一个qname qname就是一个带命名空间的xml片段 下面这段会被翻译为 /* <ns:add xmlns:ns="http://soap.xiongpan.com/"> </ns:add> */ QName qname= new QName( "http://soap.xiongpan.com/" , "add" , "ns" ); SOAPBodyElement element= body.addBodyElement(qname); element.addChildElement( "a").setValue( "22"); element.addChildElement( "b").setValue( "332"); message.writeTo(System. out); //创建要访问的服务 URL url= new URL( "http://localhost:9595/ns?wsdl" ); QName sqname= new QName("http://soap.xiongpan.com/" ,"ServerUtilImplService" ); Service service=Service. create(url,sqname); //创建Dispatch Dispatch<SOAPMessage> dispatch=service .createDispatch( new QName("http://soap.xiongpan.com/" ,"ServerUtilImplPort" ), SOAPMessage.class , Service.Mode.MESSAGE ); SOAPMessage responeMessage= dispatch.invoke(message); System. out.println( "invoke----------------------------------" ); responeMessage.writeTo(System. out); } }
执行结果:
发送的请求
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/><SOAP-ENV:Body><ns:add xmlns:ns="http://soap.xiongpan.com/"><a>22</a><b>332</b></ns:add></SOAP-ENV:Body></SOAP-ENV:Envelope>
invoke----------------------------------
返回的结果:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Header/><S:Body><ns2:addResponse xmlns:ns2="http://soap.xiongpan.com/"><add>354</add></ns2:addResponse></S:Body></S:Envelope>
相关推荐
在基于SOAP网关的Web Services访问控制架构中,XACML被用来定义和执行授权策略,以确保只有经过认证和授权的用户才能访问Web Services。 #### 结论 本文提出的基于SOAP网关的Web Services访问控制架构,不仅解决了...
HelloWorld-service.wsdl 文件描述了 Web Services 的服务访问点,而 HelloWorld-binding.wsdl 文件描述了 Web Services 的通信消息的数据结构、每个访问点支持的操作、特定的断口类型的具体协议和数据格式规范的...
其中,简单对象访问协议(Simple Object Access Protocol,简称SOAP)作为Web服务中最常见的通信协议之一,因其规范性、安全性及易理解性等特点而被广泛采用。本文将基于提供的文件信息,详细介绍如何使用Java和SOAP...
- **SOAP消息**:简单对象访问协议(SOAP)是一种基于XML的标准协议,用于在Web服务之间交换结构化的信息。它定义了如何封装信息,以及如何处理请求和响应。 - **组合变异**:指在测试过程中同时改变多个参数,以...
- **创建SOAP消息**:客户端根据服务的WSDL(Web Service Description Language)文档,构造符合SOAP规范的请求消息。 - **发送请求**:客户端通过HTTP协议将SOAP消息发送到服务端的指定URL。 - **服务处理**:...
### VB.NET与Java通过SOAP协议访问WebService的知识点 #### 一、基础知识介绍 - **SOAP (Simple Object Access Protocol)**: 是一种轻量级协议,用于交换结构化的信息。它定义了用于构造消息以及进行信息传输的...
Web服务是一种通过互联网进行通信的软件,它允许不同的应用程序之间交换数据,不受操作系统或编程语言的限制,采用标准的XML(Extensible Markup Language)进行数据封装和传输。 在ASP.NET环境中,Web服务通常以...
在2013年的课程中,重点可能包括了SOAP(简单对象访问协议)、REST(表述性状态转移)以及WSDL(Web服务描述语言)等关键概念。 SOAP是Web服务早期广泛采用的通信协议,它定义了一种结构化的XML消息格式,用于交换...
此外,SOAP还促进了Web服务的发展,通过定义WSDL(Web服务描述语言)和UDDI(统一描述、发现和集成)标准,使得服务发现和互操作性得到进一步提升。 总的来说,SOAP是分布式计算领域的一个重要里程碑,它通过简单、...
真正潜在风险存在于 REST 灵活的使用方式上,既可以被服务器端调用又能被客户端调用,所以一开始就要明确地区分用户访问权限和系统访问权限,区分 Web 页面权限和 REST 服务权限,但有时在开发中经常混为一谈,所以...
在Web服务开发中,SOAP(简单对象访问协议)是一种常见的消息传输协议,用于在不同系统间交换结构化和类型化的信息。Servlet作为Java Web应用程序的核心组件,常被用来处理HTTP请求和响应。本教程将深入探讨如何使用...
Web服务的核心技术包括SOAP(简单对象访问协议)、WSDL(Web服务描述语言)和UDDI(统一描述、发现和集成)。 1. SOAP(Simple Object Access Protocol):SOAP是Web服务的标准通信协议,它使用XML(可扩展标记语言...
综上所述,Web服务测试工具对于开发和维护高质量的Web服务至关重要,而`wscaller`这样的工具则提供了方便快捷的方式来验证和测试基于WSDL和SOAP的Web服务。通过使用这些工具,开发者可以确保他们的服务能够正确、...
1. **Web服务的基本原理**:Web服务基于开放标准,如SOAP(简单对象访问协议)和REST(表述性状态转移)架构,使用XML(可扩展标记语言)进行数据交换。SOAP服务通常采用WSDL(Web服务描述语言)定义服务接口,而...
综上所述,SOAP1.2协议规范为Web服务提供了一套标准化的通信协议,使得服务提供者和服务消费者能以统一的方式交换信息,从而促进了分布式系统的互操作性。通过理解并应用这些知识点,开发者可以构建出高效、可靠的...
这对于构建分布式系统特别有用,例如,可以将数据访问逻辑封装成Web服务,部署在另一台服务器上,从而实现功能模块的解耦。 WebService的最大优点是其异构平台间的互通性。它利用XML(可扩展标记语言)、XSD(XML ...
总之,SOAP Web Service作为一种成熟且广泛采用的分布式应用程序模型,为企业和个人提供了高效、灵活的服务交互方式。随着技术的不断发展,尽管出现了RESTful API等新的服务架构,SOAP Web Service仍然在许多领域...