您当前的位置: 首页 > 

宝哥大数据

暂无认证

  • 1浏览

    0关注

    1029博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Webservice06---SOAP消息的传递和处理(基于Message方式)

宝哥大数据 发布时间:2017-10-14 12:03:07 ,浏览量:1

使用Message方式传递和处理SOAP消息。 1.1、创建服务
private String wsdlUrlStr = "http://localhost:9999/ns?wsdl";
private String targetNameSpace = "http://service.chb.com/";
//1、创建服务(Service)
//1.1、创建URL , 
URL wsdlUrl = new URL(wsdlUrlStr);
//1.2、创建QName;
QName qName = new QName(targetNameSpace, 
                                    "MyServiceImplService");    //发布服务名称
Service service = Service.create(wsdlUrl, qName);
1.2、创建Dispatch ,通过Dispatch 发送SOAP消息, 已经获取响应的消息。

这里写图片描述

1.3、创建SOAPMessage, 并通过QName指定消息中的数据传递。
            //3、创建SOAPMessage 
            SOAPMessage message = MessageFactory.newInstance().createMessage();
            SOAPEnvelope envelope = message.getSOAPPart().getEnvelope();//获取信封
            SOAPBody body = envelope.getBody();

            //4、创建QName 来指定消息中传递数据
            QName eleQName = new QName(targetNameSpace, "add", "q0");
            SOAPElement ele = body.addBodyElement(eleQName);
            ele.addChildElement("a").setValue("22");
            ele.addChildElement("b").setValue("33");
            message.writeTo(System.out);//打印一下请求message
1.4、通过Dispatch 发送Message
            //5、通过Dispatch发送消息。
            SOAPMessage response = dispatch.invoke(message);
            response.writeTo(System.out);//输出响应的消息。
1.5、通过Document 获取响应消息中的参数。
            //6、获取响应message的参数。
            Document doc = response.getSOAPBody().extractContentAsDocument();
            String result = doc.getElementsByTagName("addResult").item(0).getTextContent();
            System.out.println("\n" + result);
完整代码
public class TestSOAP {

    private String wsdlUrlStr = "http://localhost:9999/ns?wsdl";
    private String targetNameSpace = "http://service.chb.com/";

    @Test
    public void test02() {
        try {
            //1、创建服务(Service)
            //1.1、创建URL , 
            URL wsdlUrl = new URL(wsdlUrlStr);
            //1.2、创建QName;
            QName qName = new QName(targetNameSpace, 
                                    "MyServiceImplService");    //发布服务名称
            Service service = Service.create(wsdlUrl, qName);

            /**
             
                
                    
                
            
             */
            //2、创建Dispatch 
            QName portName = new QName(targetNameSpace, "MyServiceImplPort");
            Dispatch dispatch = service.createDispatch(portName, 
                            SOAPMessage.class, 
                            Service.Mode.MESSAGE);//消息传递方式

            //3、创建SOAPMessage 
            SOAPMessage message = MessageFactory.newInstance().createMessage();
            SOAPEnvelope envelope = message.getSOAPPart().getEnvelope();//获取信封
            SOAPBody body = envelope.getBody();

            //4、创建QName 来指定消息中传递数据
            QName eleQName = new QName(targetNameSpace, "add", "q0");
            SOAPElement ele = body.addBodyElement(eleQName);
            ele.addChildElement("a").setValue("22");
            ele.addChildElement("b").setValue("33");
            message.writeTo(System.out);//打印一下请求message


            //5、通过Dispatch发送消息。
            System.out.println("\n invoke.....");
            SOAPMessage response = dispatch.invoke(message);
            response.writeTo(System.out);

            //6、获取响应message的参数。
            Document doc = response.getSOAPBody().extractContentAsDocument();
            String result = doc.getElementsByTagName("addResult").item(0).getTextContent();
            System.out.println("\n" + result);

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (SOAPException e) {
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


    }

}
关注
打赏
1587549273
查看更多评论
立即登录/注册

微信扫码登录

0.0396s