| Author |
SOAP Header Authentication!!!
|
K Saleem
Greenhorn
Joined: Aug 03, 2004
Posts: 4
|
|
Dear Friends, I am trying to access webservices using java client. I am getting following error: Fault Code = soap:Server Fault String = Server was unable to process request. --> Authentication failed. Subscription ID is empty The service provider providing clinet in .NET ,and our requirement is to use the same service( to find the distance betweent two zip code) in Java. I have to set sessionID in the header , so the webservice authenticate me in order to use this service. Please share any sample code, that is doing similar functionality, or kind of help to resolve this problem. any help in this regard would be highly appreciated. http://www.codebump.com/services/ZipCodeLookup.asmx?op=GetDistanceBetweenZipCodes http://www.codebump.com/services/ZipCodeLookup.asmx?WSDL ********************** SOAP REQUEST **************************************** POST /services/ZipCodeLookup.asmx HTTP/1.1 Host: www.codebump.com Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: "http://skats.net/services/GetDistanceBetweenZipCodes" <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://skats.net/services/" xmlns:types="http://skats.net/services/encodedTypes" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> <tns:AuthenticationHeader> <SessionID xsi:type="xsd:string">string</SessionID> </tns:AuthenticationHeader> </soap:Header> <soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <tns:GetDistanceBetweenZipCodes> <zip1 xsi:type="xsd:string">string</zip1> <zip2 xsi:type="xsd:string">string</zip2> </tns:GetDistanceBetweenZipCodes> </soap:Body> </soap:Envelope> **************************************************************************************** ********************** SOAP Response **************************************** HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: length <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://skats.net/services/" xmlns:types="http://skats.net/services/encodedTypes" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <tns:GetDistanceBetweenZipCodesResponse> <GetDistanceBetweenZipCodesResult xsi:type="xsd:float">float</GetDistanceBetweenZipCodesResult> </tns:GetDistanceBetweenZipCodesResponse> </soap:Body> </soap:Envelope> **************************************************************************************** Thanks, KS
|
KS
|
 |
Lasse Koskela
author
Sheriff
Joined: Jan 23, 2002
Posts: 11962
|
|
Did you read the explanation on this page?
NOTE: This service requires a subscription. You can register online using Subscriptions interface. There're several types of subscriptions available including a free subscription so you can continue using the web service without paying. When you subscribe you will be issued a subscriber ID that uniquely identify you. You must submit that ID with every request by setting AuthenticationHeader SOAP header. Consult WSDL for more information.
|
Author of Test Driven (2007) and Effective Unit Testing (2013) [Blog] [HowToAskQuestionsOnJavaRanch]
|
 |
K Saleem
Greenhorn
Joined: Aug 03, 2004
Posts: 4
|
|
Yes, I have the subscription id and able to access the service using .NET client and a web interface. KS
|
 |
Lasse Koskela
author
Sheriff
Joined: Jan 23, 2002
Posts: 11962
|
|
Doh. Of course. Sorry... You could use a JAX-RPC handler to add the necessary SOAP Header elements. Here's a sketch: (no guarantees -- I haven't even compiled it)
|
 |
K Saleem
Greenhorn
Joined: Aug 03, 2004
Posts: 4
|
|
Thanks, Here is the code we are using to call the service and geting the following error Generated fault: Fault Code = soap:Server Fault String = Server was unable to process request. --> Authentication failed. Subscription ID is empty Regards, KS
|
 |
Lasse Koskela
author
Sheriff
Joined: Jan 23, 2002
Posts: 11962
|
|
|
Can you compare the outgoing SOAP request from the .NET client and the Java client?
|
 |
K Saleem
Greenhorn
Joined: Aug 03, 2004
Posts: 4
|
|
request is same, but we have no tool to compare or get the request format. from either client.. but the proper format of the request as follows Here the request format is defined. http://www.codebump.com/services/ZipCodeLookup.asmx?op=GetDistanceBetweenZipCodes
|
 |
Lasse Koskela
author
Sheriff
Joined: Jan 23, 2002
Posts: 11962
|
|
Sure you can. You just need to start a proxy like Grinder's TCP Sniffer on your client machine and change the .NET client and Java client to use "http://localhost:xxxx/foo" instead of "http://codebump.com/services/zipcodelookup.asmx" where xxxx is the port number you configured your proxy to listen. You'll be able to see exactly what your client is sending over the TCP connection and compare the requests sent by the different clients. [ August 04, 2004: Message edited by: Lasse Koskela ]
|
 |
 |
|
|
subject: SOAP Header Authentication!!!
|
|
|