Re: [SOAP] Need help generating a response that matches wsdl
[email protected] (Richard Quadling) Wed, 6 Oct 2010 11:02:15 +0100
| Newsgroups | php.soap |
|---|---|
| Message-ID | <[email protected]> |
On 6 October 2010 09:14, nick.weavers <[email protected]> wrote: > > It appears that the response array should not contain the top output wsdl > message element, but start with the first child element.... changing my > server to the following solved my problem: > > [quote] > function ConsumeLead($data) > > $response = > array('ConsumeLeadResult' => > array( > 'LeadReceived' => 'true' > ) > ); > > return $response; > } > [/quote] > The response is now working: > [quote] > Response: <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" > xmlns:ns1="http://www.paaleads.com/LeadConsumerService/"><SOAP-ENV:Body><ns1:ConsumeLeadResponse><ns1:ConsumeLeadResult><ns1:LeadReceived>true</ns1:LeadReceived></ns1:ConsumeLeadResult></ns1:ConsumeLeadResponse></SOAP-ENV:Body></SOAP-ENV:Envelope> > [/quote] > That only took me 4 hours to solve using the Monte Carlo problem solving > technique %-| I must admit, I've never had to build a server to match a wsdl file, only a client (and then I use wsdl2php from sourceforge with the mods/patches by RazorsEdgeUK). But building a server. Well, the classes built by wsdl2php (ignoring the client class) would act as the basis for this. class ConsumeLead { public $request; // ConsumeLeadRequest } class ConsumeLeadRequest { public $LeadType; // LeadType public $LeadXml; // string public $AuthenticationUsername; // string public $AuthenticationPassword; // string } class LeadType { const Unknown = 'Unknown'; const Mortgage = 'Mortgage'; const TermAssurance = 'TermAssurance'; const Travel = 'Travel'; const PMI = 'PMI'; const SecuredLoan = 'SecuredLoan'; const CreditHelp = 'CreditHelp'; const Stakeholder = 'Stakeholder'; const TermPostal = 'TermPostal'; const Pension = 'Pension'; const Savings = 'Savings'; const Investments = 'Investments'; const UnsecuredLoan = 'UnsecuredLoan'; const OverseasMortgage = 'OverseasMortgage'; const Debt = 'Debt'; const ASU = 'ASU'; const LegalServices = 'LegalServices'; } class ConsumeLeadResponse { public $ConsumeLeadResult; // ConsumeLeadResponse } From there it is a case of building the appropriate framework. My server classes deal with supplying the wsdl file and the end-user docuementation (http://site.com/service, http://site.com/service?wsdl, http://site.com/service?help or doc or documentation or man or manual, etc.). But I never build XML files by hand for anything more than the most simplest of files. -- Richard Quadling Twitter : EE : Zend @RQuadling : e-e.com/M_248814.html : bit.ly/9O8vFY