webservice入门课程03
发布时间:2020-12-16 23:41:41 所属栏目:安全 来源:网络整理
导读:本节主要内容:SOAP协议、WSDL SOAP:simple object access protocol 简单对象访问协议 一条 SOAP 消息就是一个普通的 XML 文档,包含下列元素: 必需的 Envelope 元素,可把此 XML 文档标识为一条 SOAP 消息(Envelope: [?env?l?up] n. 信封,封皮 ) 可选的 He
本节主要内容:SOAP协议、WSDL SOAP:simple object access protocol 简单对象访问协议
一条 SOAP 消息就是一个普通的 XML 文档,包含下列元素:
语法规则
这里是一些重要的语法规则:
消息基本结构
SOAP 把 XML 的使用代码化为请求和响应参数编码模式,并用HTTP 作传输。具体地讲,一个SOAP 方法可以简单地看作遵循SOAP编码规则的HTTP请求和响应, 个人理解:SOAP协议就是特定格式的http参数形式,也是说soap用来传递信息的一种格式或者约定的协议,基于此协议,应用服务器或者web服务器可以知道 要调用哪个方法,传递什么数据,并且以soap形式返回,浏览器也能够解析出期望的结果出来,总之,就是一种协议规范罢了 给参数设置名称 @WebService public interface IMyService { @WebResult(name="addResult") public int add(@WebParam(name="a")int a,@WebParam(name="b")int b); @WebResult(name="minusResult") public int minus(@WebParam(name="a")int a,@WebParam(name="b")int b); } 调用 public class TestCilent2 { public static void main(String[] args) throws MalformedURLException { URL url = new URL("http://localhost:777/ns?wsdl"); QName sname = new QName("http://my.test/","MyServiceImplService"); //直接通过生成的MyServiceImplService代替原来的service,获取接口,达到了简化 MyServiceImplService msis = new MyServiceImplService(url,sname); IMyService ms = msis.getMyServiceImplPort(); System.out.println(ms.add(12,33)); } } WSDL (Web Services Description Language): http://localhost:7777/ns?xsd=1内容 <xs:schema version="1.0" targetNamespace="http://my.test/"> <xs:element name="add" type="tns:add"/> <xs:element name="addResponse" type="tns:addResponse"/> <xs:element name="minus" type="tns:minus"/> <xs:element name="minusResponse" type="tns:minusResponse"/> <xs:complexType name="add"> <xs:sequence> <xs:element name="a" type="xs:int"/> <xs:element name="b" type="xs:int"/> </xs:sequence> </xs:complexType> <xs:complexType name="addResponse"> <xs:sequence> <xs:element name="addResult" type="xs:int"/> </xs:sequence> </xs:complexType> <xs:complexType name="minus"> <xs:sequence> <xs:element name="a" type="xs:int"/> <xs:element name="b" type="xs:int"/> </xs:sequence> </xs:complexType> <xs:complexType name="minusResponse"> <xs:sequence> <xs:element name="minusResult" type="xs:int"/> </xs:sequence> </xs:complexType> </xs:schema> http://localhost:7777/ns?wsdl内容 <definitions targetNamespace="http://my.test/" name="MyServiceImplService"> types:用来定义访问的元素和返回的元素 <types> <xsd:schema><xsd:import namespace="http://my.test/" schemaLocation="http://localhost:7777/ns?xsd=1"/> </xsd:schema> </types> message:用来传递soap消息 <message name="add"> <part name="parameters" element="tns:add"/> </message> <message name="addResponse"> <part name="parameters" element="tns:addResponse"/> </message> <message name="minus"> <part name="parameters" element="tns:minus"/> </message> <message name="minusResponse"> <part name="parameters" element="tns:minusResponse"/> </message> portType:指明接口的名称和有哪些方法和消息 <portType name="IMyService"> <operation name="add"> <input message="tns:add"/> <output message="tns:addResponse"/> </operation> <operation name="minus"> <input message="tns:minus"/> <output message="tns:minusResponse"/> </operation> </portType> bingin:指定消息传递的格式 <binding name="MyServiceImplPortBinding" type="tns:IMyService"> <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> <operation name="minus"> <soap:operation soapAction=""/> <input><soap:body use="literal"/></input> <output><soap:body use="literal"/></output> </operation> </binding> service:指定服务的名称 <service name="MyServiceImplService"><port name="MyServiceImplPort" binding="tns:MyServiceImplPortBinding"><soap:address location="http://localhost:7777/ns"/></port></service> </definitions> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |