JAX-WS - Adding SOAP Headers

后端 未结 10 2245
鱼传尺愫
鱼传尺愫 2020-12-05 02:11

I am trying to create a standalone client to consume some web services. I must add my username and password to the SOAP Header. I tried adding the credentials as follows:

10条回答
  •  挽巷
    挽巷 (楼主)
    2020-12-05 02:55

    The best option (for my of course) is do it yourserfl. It means you can modify programattly all parts of the SOAP message

    Binding binding = prov.getBinding();
       List handlerChain = binding.getHandlerChain();
        handlerChain.add( new ModifyMessageHandler() );
        binding.setHandlerChain( handlerChain ); 
    

    And the ModifyMessageHandler source could be

    @Override
    public boolean handleMessage( SOAPMessageContext context )
    {
        SOAPMessage msg = context.getMessage(); 
        try
        {
    
            SOAPEnvelope envelope = msg.getSOAPPart().getEnvelope();
            SOAPHeader header = envelope.addHeader();
            SOAPElement ele = header.addChildElement( new QName( "http://uri", "name_of_header" ) );
            ele.addTextNode( "value_of_header" );
            ele = header.addChildElement( new QName( "http://uri", "name_of_header" ) );
            ele.addTextNode( "value_of_header" );
            ele = header.addChildElement( new QName( "http://uri", "name_of_header" ) );
            ele.addTextNode( "value_of_header" );
    

    ...

    I hope this helps you

提交回复
热议问题