java使用soap方式简单实现webservice
2014-02-28 14:56
561 查看
java类:
wsdl文件:
控制台输出:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/><SOAP-ENV:Body><axis:getVersion xmlns:axis="http://axisversion.sample"/></SOAP-ENV:Body></SOAP-ENV:Envelope>
invoking.....
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header/><soapenv:Body><ns:getVersionResponse xmlns:ns="http://axisversion.sample"><ns:return>Hi - the Axis2 version is 1.6.2</ns:return></ns:getVersionResponse></soapenv:Body></soapenv:Envelope>
Hi - the Axis2 version is 1.6.2
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.SOAPConstants; import javax.xml.soap.SOAPEnvelope; import javax.xml.soap.SOAPMessage; import javax.xml.ws.Dispatch; import javax.xml.ws.Service; import org.w3c.dom.Document; public class Receive { /** * @param args */ @SuppressWarnings("unused") public static void main(String[] args) throws Exception { String ns = "http://axisversion.sample"; String wsdlUrl = "http://127.0.0.1:8080/axis2/services/Version?wsdl"; //1、创建服务(Service) URL url = new URL(wsdlUrl); QName sname = new QName(ns,"Version"); Service service = Service.create(url,sname); //2、创建Dispatch Dispatch<SOAPMessage> dispatch = service.createDispatch(new QName(ns,"VersionHttpSoap11Endpoint"),SOAPMessage.class,Service.Mode.MESSAGE); //3、创建SOAPMessage SOAPMessage msg = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL).createMessage(); SOAPEnvelope envelope = msg.getSOAPPart().getEnvelope(); SOAPBody body = envelope.getBody(); //4、创建QName来指定消息中传递数据 QName ename = new QName(ns,"getVersion","axis");//<nn:add xmlns="xx"/> SOAPBodyElement ele = body.addBodyElement(ename); // 传递参数 // ele.addChildElement("a").setValue("22"); // ele.addChildElement("b").setValue("33"); msg.writeTo(System.out); System.out.println("\n invoking....."); //5、通过Dispatch传递消息,会返回响应消息 SOAPMessage response = dispatch.invoke(msg); response.writeTo(System.out); System.out.println(); //6、响应消息处理,将响应的消息转换为dom对象 Document doc = response.getSOAPPart().getEnvelope().getBody().extractContentAsDocument(); String str = doc.getElementsByTagName("ns:return").item(0).getTextContent(); System.out.println(str); } }
wsdl文件:
<?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:ns1="http://org.apache.axis2/xsd" xmlns:ns="http://axisversion.sample" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://axisversion.sample"> <wsdl:documentation>Version</wsdl:documentation> <wsdl:types> <xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://axisversion.sample"> <xs:element name="VersionException"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="VersionException" nillable="true" type="ns:Exception"/> </xs:sequence> </xs:complexType> </xs:element> <xs:complexType name="Exception"> <xs:sequence> <xs:element minOccurs="0" name="Message" nillable="true" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:element name="getVersion"> <xs:complexType> <xs:sequence/> </xs:complexType> </xs:element> <xs:element name="getVersionResponse"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="return" nillable="true" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> </wsdl:types> <wsdl:message name="getVersionRequest"> <wsdl:part name="parameters" element="ns:getVersion"/> </wsdl:message> <wsdl:message name="getVersionResponse"> <wsdl:part name="parameters" element="ns:getVersionResponse"/> </wsdl:message> <wsdl:message name="VersionException"> <wsdl:part name="parameters" element="ns:VersionException"/> </wsdl:message> <wsdl:portType name="VersionPortType"> <wsdl:operation name="getVersion"> <wsdl:input message="ns:getVersionRequest" wsaw:Action="urn:getVersion"/> <wsdl:output message="ns:getVersionResponse" wsaw:Action="urn:getVersionResponse"/> <wsdl:fault message="ns:VersionException" name="VersionException" wsaw:Action="urn:getVersionVersionException"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="VersionSoap11Binding" type="ns:VersionPortType"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> <wsdl:operation name="getVersion"> <soap:operation soapAction="urn:getVersion" style="document"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> <wsdl:fault name="VersionException"> <soap:fault use="literal" name="VersionException"/> </wsdl:fault> </wsdl:operation> </wsdl:binding> <wsdl:binding name="VersionSoap12Binding" type="ns:VersionPortType"> <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> <wsdl:operation name="getVersion"> <soap12:operation soapAction="urn:getVersion" style="document"/> <wsdl:input> <soap12:body use="literal"/> </wsdl:input> <wsdl:output> <soap12:body use="literal"/> </wsdl:output> <wsdl:fault name="VersionException"> <soap12:fault use="literal" name="VersionException"/> </wsdl:fault> </wsdl:operation> </wsdl:binding> <wsdl:binding name="VersionHttpBinding" type="ns:VersionPortType"> <http:binding verb="POST"/> <wsdl:operation name="getVersion"> <http:operation location="getVersion"/> <wsdl:input> <mime:content type="application/xml" part="parameters"/> </wsdl:input> <wsdl:output> <mime:content type="application/xml" part="parameters"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="Version"> <wsdl:port name="VersionHttpSoap11Endpoint" binding="ns:VersionSoap11Binding"> <soap:address location="http://127.0.0.1:8080/axis2/services/Version.VersionHttpSoap11Endpoint/"/> </wsdl:port> <wsdl:port name="VersionHttpSoap12Endpoint" binding="ns:VersionSoap12Binding"> <soap12:address location="http://127.0.0.1:8080/axis2/services/Version.VersionHttpSoap12Endpoint/"/> </wsdl:port> <wsdl:port name="VersionHttpEndpoint" binding="ns:VersionHttpBinding"> <http:address location="http://127.0.0.1:8080/axis2/services/Version.VersionHttpEndpoint/"/> </wsdl:port> </wsdl:service> </wsdl:definitions>
控制台输出:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/><SOAP-ENV:Body><axis:getVersion xmlns:axis="http://axisversion.sample"/></SOAP-ENV:Body></SOAP-ENV:Envelope>
invoking.....
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header/><soapenv:Body><ns:getVersionResponse xmlns:ns="http://axisversion.sample"><ns:return>Hi - the Axis2 version is 1.6.2</ns:return></ns:getVersionResponse></soapenv:Body></soapenv:Envelope>
Hi - the Axis2 version is 1.6.2
相关文章推荐
- java使用soap方式简单实现webservice (二)
- 用java实现简单快速的webservice客户端/数据采集器(支持soap1.1和soap1.2标准,支持utf-8编码)
- Java中使用WebService实现简单的天气预报功能
- salesforce 零基础学习(五十一)使用 Salesforce.com SOAP API 实现用户登录以及简单的增删改查(JAVA访问salesforce)
- 使用URL工具类调用webservice接口(soap)与http接口的实现方式
- java实现简单的webservice方式
- 纯java实现简单的webservice方式
- JAVA系列课程讲座二:使用Socket通信实现简单聊天通信程序(UDP方式)
- 用java实现简单快速的webservice客户端/数据采集器(支持soap1.1和soap1.2标准,支持utf-8编码)
- Spring定时任务的实现方式--ScheduledExecutorService and ScheduledExecutorFactoryBean的简单源码解析以及使用
- 使用Java的反射简单的实现ORM框架(五)
- Android无网络状态下使用GPS定位到省市县的一种简单实现方式
- JAVA部分集合实现方式的简单概述
- 【Java】【反射】 使用反射方式去实现一个接口
- ssh/ssm使用CXF实现基于Rest方式的WebService并返回json数据
- Java 原生实现CallBack、JUnit 单元测试简单使用
- webService 使用CXF 实现简单的helloworld
- B/S协同处理的简单实现(reversed Ajax的comet方式Java山寨版)
- 使用Java实现Windows自带计算器(超简单)
- 使用jsonp和servlet实现soap跨域调用webservice弹框或者报错问题(IDEA14.04)