JAX-WS - Adding SOAP Headers

后端 未结 10 2250
鱼传尺愫
鱼传尺愫 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:57

    Not 100% sure as the question is missing some details but if you are using JAX-WS RI, then have a look at Adding SOAP headers when sending requests:

    The portable way of doing this is that you create a SOAPHandler and mess with SAAJ, but the RI provides a better way of doing this.

    When you create a proxy or dispatch object, they implement BindingProvider interface. When you use the JAX-WS RI, you can downcast to WSBindingProvider which defines a few more methods provided only by the JAX-WS RI.

    This interface lets you set an arbitrary number of Header object, each representing a SOAP header. You can implement it on your own if you want, but most likely you'd use one of the factory methods defined on Headers class to create one.

    import com.sun.xml.ws.developer.WSBindingProvider;
    
    HelloPort port = helloService.getHelloPort();  // or something like that...
    WSBindingProvider bp = (WSBindingProvider)port;
    
    bp.setOutboundHeader(
      // simple string value as a header, like stringValue
      Headers.create(new QName("simpleHeader"),"stringValue"),
      // create a header from JAXB object
      Headers.create(jaxbContext,myJaxbObject)
    );
    

    Update your code accordingly and try again. And if you're not using JAX-WS RI, please update your question and provide more context information.

    Update: It appears that the web service you want to call is secured with WS-Security/UsernameTokens. This is a bit different from your initial question. Anyway, to configure your client to send usernames and passwords, I suggest to check the great post Implementing the WS-Security UsernameToken Profile for Metro-based web services (jump to step 4). Using NetBeans for this step might ease things a lot.

提交回复
热议问题