如何定义webservice响应的soap报文
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何定义webservice响应的soap报文相关的知识,希望对你有一定的参考价值。
参考技术A 本Guide利用Eclipse以及Ant建立一个简单的WebService,以演示WebService的基本开发过程:1.系统条件:EclipseJavaEEIDEforWebDevelopersJavaSE6WindowsXP2.基本环境搭建:1)JavaSE6JDK的安装:下载JavaSE6JDK,双击,安装默认选项进行安装即可。2)Eclipse的安装与配置:安装时直接解压。配置处有两点,Window>Preferences>Java>InstalledJREs确保如下设置:安装路径可能略有不同。Window>Preferences>Java>Compiler确保如下设置:3.建立Server端工程和相关包与类:创建一个JavaProject,命名为wsServerHelloWorld:在这个项目下建立包:org.gnuhpc.wsServer在这个包下边建立类:SayHello在SayHello.java文件中输入以下代码:packageorg.gnuhpc.wsServer;importjavax.jws.WebService;@WebServicepublicclassSayHelloprivatestaticfinalStringSALUTATION="Hello";publicStringgetGreeting(Stringname)returnSALUTATION+""+name;其中注意到@WebService,这个称作annotation或者metadata,JavaSE5中的WebServicesMetadataSpecification引入的。JavaSE6中对于WebServices规范的升级以及JAX-WS(JavaAPIforXMLWebServices)2.0规范,这些升级使得我们WebServices的创建和调用变得更加容易。使用这些新功能,我们可以仅仅使用简单的Annotations注释从一个Java类创建WebServices。开发者将其类和方法之前用该annotations指定,类告诉runtimeengine以WebService的方式和操作来使能该类和方法。这个annotations可以产生一个可布署的WebService,是一个WSDL映射annotations,将Java源代码与代表WebService的WSDL元素连接在了一起。4.使用Ant产生Server端代码:首先在项目中新建一个文件:build.xml,然后使用OpenWith>AntEditor打开,输入以下脚本代码:default指定了默认执行的Target为wsgen,wsgen可以创建一个能够使用WebService的类,它生成所有用于WebService发布的源代码文件和经过编译过的二进制类文件。它还生成WSDL和符合规范的该类的WebService。Target名称为wsgen,具体执行的命令的参数:-cp为类路径-keep后产生的java文件-s产生的源文件放在哪-d产生的输出问价放在哪然后使用AntBuild选项运行:在成功执行的提示后,我们刷新一下Project我们在Project区域可以看到,结果如下:5.分布WebServiceorg.gnuhpc.wsServer下建立一个类RunService:packageorg.gnuhpc.wsServer;importjavax.xml.ws.Endpoint;publicclassRunService/***@paramargs*/publicstaticvoidmain(String[]args)System.out.println("SayHelloWebServicestarted.");Endpoint.publish("http://localhost:8080/wsServerExample",newSayHello());运行RunAs>JavaApplication。我们得到结果,说明这个webservice的Server端已经启动。6.查看WSDL:Window>ShowView>Other>General>InternalWebBrowser,在其中输入:http://localhost:8080/wsServerExample?wsdl你可以看看到底WSDL都记录了哪些信息。看完后可以停止该Server。7.监测Server我们创建完Server可以用过EclipseWebServicesExplorer监测Server,Window>OpenPerspective>Other>JavaEE打开EclipseWebServicesExplorer点击右上角的WSDLPage按钮:单击WSDLMain,在URL中输入:http://localhost:8080/wsServerExample?wsdl按Go按钮后出现一下视图:我们可以触发一个WebService操作:点击getGreetings,添加一个参数,比如gnuhpc,然后点击Go按钮:8.创建Client端工程和相关包与类:创建一个JavaProject,命名为wsClientHelloWorld,在这个项目下建立包:org.gnuhpc.wsClient9.使用Ant产生Client代码框架:编写Webservice时,可以使用工具来利用WSDL生成进行调用的客户端桩;或者也可以使用底层API来手动编写Webservice。前者方便,后者灵活,现在我们通过前者做说明:新建文件build.xmlNew>File>build.xml注意:wsgen支持从Javaclass创建Webservices,wsimport支持从WSDL创建Webservices,分别对应于JAX-RPC方式下的Java2WSDL和WSDL2Java。要根据发布的WSDL进行创建,这也就是为什么要先运行RunServer的原因了。运行Server的RunService:RunAs>JavaApplication>运行该Ant脚本,产生Client代码:RunAs>AntBuild运行成功的提示如下:生成的代码如下:这一步读取WSDL并生成客户端桩。这些桩是将为我们的代码所用的Java类和接口。这些桩给服务器端功能提供了一个客户端接口。例如,如果我们的服务器提供一个Maths服务,该服务带有一个叫做add的方法。我们的客户端代码将调用桩上的一个方法,而桩实现将对该方法使用参数封装,把Java方法调用变为Webservice请求。这个请求将基于HTTP发送给服务器,而且将使用SOAP作为RPC协议。监听服务器接收该SOAP消息,然后(十有八九)将其转换为服务器处的一次方法调用。本回答被提问者采纳JAVA 如何解析soap
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns2:inpDetailSeekResponse xmlns:ns2="http://insurance.webservice.cmis.taiyang.com/">
<return>
<list>
<detailId>NTc4OTQ1Mw==</detailId>
<inpatientSn>NzcyMDI=</inpatientSn>
<inpatientRxno>NDE5OTI=</inpatientRxno>
<insureId>MDEwMzAwMDAwMzg1</insureId>
<name>ss7C89eiyeTSug==</name>
<spec>MTC6wcn9KjHWpw==</spec>
<unit>usHJ/Q==</unit>
<conf>16LJ5LzB</conf>
<price>MTcuOQ==</price>
<quantity>NA==</quantity>
<useDate>MjAxNC0wNC0wMQ==</useDate>
<factMoney>NzEuNg==</factMoney>
<enableRation>MQ==</enableRation>
<enableMoney>NzEuNg==</enableMoney>
<classNo>MDEwMw==</classNo>
<money>NzEuNg==</money>
</list>
</return>
</ns2:inpDetailSeekResponse>
</soap:Body>
</soap:Envelope>
求高手帮忙告诉下如何用java解析下这个报文
,最好详细点。。。
Element header = root.element("RequestData");
在根据节点名称逐步获取 参考技术B 我觉得你的问题应该不是说如何解析这个xml吧,应该说如何吧这个xml转换为一个实际的java类调用把,那这个太多了,建议cxf吧。可以做soap的客户端也可以做服务端,不需要你写多少东西本回答被提问者采纳
以上是关于如何定义webservice响应的soap报文的主要内容,如果未能解决你的问题,请参考以下文章
java如何打印webservice 发送的soap报文协议
关于使用Axis2 webservice 处理Fault响应时抛org.apache.axis2.AxisFault的分析