my dog learned polymorphism*
The moose likes Web Services and the fly likes adding header to soap requests Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Web Services
Bookmark "adding header to soap requests" Watch "adding header to soap requests" New topic
Author

adding header to soap requests

Alexandru Gifei
Ranch Hand

Joined: May 19, 2012
Posts: 40

I am developing a client side application in c# which is using non-.NET web services. I need to add a token to every request i make after i receive this token.
The header has to look like this:

<?xml version='1.0' encoding='utf-8'?>
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
<soapenv:Header>
<ws:AuthToken xmlns:ws="http://wso2.com">
<token>96cb8826-e1c3-424f-9261-0ff342be67c4</token>
</ws:AuthToken>
</soapenv:Header>
<soapenv:Body>
....
</soapenv:Body></soapenv:Envelope>

How can i add this token programatically in the soap header to every request i make?


Life is not measured by the number of breaths we take, but by the moments that take our breath away.
Bosun Bello
Ranch Hand

Joined: Nov 06, 2000
Posts: 1510
You need to add a client-side webservice handler. You may want to read up on that.


Bosun (SCJP, SCWCD)
So much trouble in the world -- Bob Marley
Ulf Dittmer
Marshal

Joined: Mar 22, 2005
Posts: 41601
    
  55
Normally you'd use a WS-Security library that comes with all major SOAP stacks, and as Bosun said, that's what client-side handlers do.


Ping & DNS - my free Android networking tools app
Alexandru Gifei
Ranch Hand

Joined: May 19, 2012
Posts: 40

I managed to resolve this issue by creating a new web service client based on soap protocol. Then i added the token to SoapClientMessage by overriding the GetWriterForMessage method.
Anand Bansal
Greenhorn

Joined: Oct 15, 2012
Posts: 10
Hi All,

I am able to achieve this. But I want to add a custom header tag inside a SOAP Header. It should not have a SOAP URI and any namespaces.

<soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><wsse:UsernameToken wsu:Id="UsernameToken-9419978" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><wsse:Username>admin</wsse:Username><wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">admin</wsse:Password></wsse:UsernameToken></wsse:Security>

<ABCHeader><MySubTag>textvalues</MySubTag></ABCHeader> ---------> This needs to be added.

</soapenv:Header>

Can someone help me out on this? I tried to add this through the below code and is adding extra information not required by me.

SOAPElement newHeader = soapheader.addChildElement("ABCHeader");
SOAPElement mySubTag = newHeader.addChildElement("MySubTag");
mySubTag.addTextNode("textvalues");

Output:
<soapenv:ABCHeader soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0"><soapenv:MySubTag>textValues</soapenv:MySubTag></soapenv:ABCHeader>


Expected Output:
<ABCHeader><MySubTag>textvalues</MySubTag></ABCHeader>
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: adding header to soap requests