package org.example.myservice; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import javax.xml.namespace.QName; import javax.xml.soap.MessageFactory; import javax.xml.soap.SOAPBody; import javax.xml.soap.SOAPElement; import javax.xml.soap.SOAPEnvelope; import javax.xml.soap.SOAPException; import javax.xml.soap.SOAPMessage; import javax.xml.soap.SOAPPart; import javax.xml.ws.Dispatch; import javax.xml.ws.Service; import org.junit.Test; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class JunitTest { @Test public void testMessage(){ //1,创建消息工厂 try { MessageFactory factory=MessageFactory.newInstance(); //2,根据消息工厂创建SOAPMessage SOAPMessage messge=factory.createMessage(); //3,创建SOAPPart SOAPPart part=messge.getSOAPPart() ; //4,获取信封 SOAPEnvelope envelop=part.getEnvelope() ; //5,获取消息主题部分 SOAPBody body=envelop.getBody(); //6,创建信息 QName qname= new QName(wsdlUrl, "add" , "ns" ); SOAPElement ele=body.addBodyElement(qname); ele.addChildElement( "number1" ).setValue( "1" ); ele.addChildElement( "number2" ).setValue( "2" ); messge.writeTo(System.out); } catch (SOAPException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //测试将消息发送到服务器端 @Test public void testSendMessge(){ // 1,创建服务 try { URL url= new URL(wsdlUrl); QName qname= new QName(ns, "MyServiceImplService" ); Service service=Service.create(url,qname); // 2,创建Dispicathc Dispatch<SOAPMessage> dispatch=service.createDispatch( new QName(ns, "MyServiceImplPort" ), SOAPMessage. class , Service.Mode.MESSAGE); // 3,创建消息 SOAPMessage message=MessageFactory.newInstance().createMessage(); SOAPBody body =message.getSOAPPart().getEnvelope().getBody(); SOAPElement ele=body.addChildElement( new QName(ns, "add" , "nn" )); ele.addChildElement( "number1" ).setValue( "12" ); ele.addChildElement( "number2" ).setValue( "13" ); SOAPMessage response=dispatch.invoke(message); //response.writeTo(System.out); NodeList nodeList=response.getSOAPBody().getElementsByTagName( "result" ); Node node=nodeList.item( 0 ); System.out.println(node.getTextContent()); //使用此种方式也能够使用想要的值。 } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SOAPException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } |
此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/68987.html