I am facing an issue with a web service request that is made from DD application. The WSDL is used to generate the web service client. When the request is fired, the web server returns an error saying one of the request parameter is not available in the request. Using wire shark I was able to capture the data and see all the request fields are sent properly. this is a HTTP request and the data is set in the java objects for both the input and output parameters.
Below is the Soap Envelope body:
<soapenv:Body>
<ValidateCallerByAccountPINRequest xmlns="http://www.checkfree.com/SDCCUWebService.xsd">
<HostTransactionID>09367393476</HostTransactionID>
<PIN>0199</PIN>
<AccountNumber>0002000199</AccountNumber>
</ValidateCallerByAccountPINRequest>
</soapenv:Body>
The response that is recieved from the web server is:
<soap:Body>
<s1:ValidateCallerByAccountPINResponse xmlns:s1="http://www.checkfree.com/SDCCUWebService.xsd">
<s1:HostTransactionID></s1:HostTransactionID>
<s1:returnCode>10010</s1:returnCode>
<s1:returnString>This request did not specify an account number</s1:returnString>
<s1:NumberOfSavingAccounts></s1:NumberOfSavingAccounts>
<s1:NumberOfLoanAccounts></s1:NumberOfLoanAccounts>
<s1:NumberOfCheckingAccounts></s1:NumberOfCheckingAccounts>
<s1:NumberOfVisaAccounts></s1:NumberOfVisaAccounts>
<s1:LanguagePreference></s1:LanguagePreference>
<s1:HistoryPreference></s1:HistoryPreference>
</s1:ValidateCallerByAccountPINResponse>
</soap:Body>
I used a .Net based tool to generate the client using the WSDL and fired the request. The .Net client was able to get the response properly. the only difference i can see between this and the DD application is the way the name space is specified.
The soap body is set from the .Net tool as
<soap:Body>
<s1:ValidateCallerByAccountPINRequest>
<s1:HostTransactionID>09367393476</s1:HostTransactionID>
<s1:PIN>0199</s1:PIN>
<s1:AccountNumber>0002000199</s1:AccountNumber>
</s1:ValidateCallerByAccountPINRequest>
</soap:Body>
The request clearly has the service name (ValidateCallerByAccountPINRequest) with the name space s1, wherein the DD application specified the name space but doesnt include the name space in the request parameters or the service name. The web server has some limitation (which is unavoidable, says the client) and expects the name space for every occurance of the requested service or the request fields that are assosciated with it. Is there a way to modify the the web service client to include this name space as part of the request parameters and the service name?
|