how to generate a soap request in php from this xml?

harryiebell

New Member
I'm tired of trying to send a request with SOAP. this is my xml\[code\]<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:bpf="http://schemas.datacontract.org/2004/07/Bpf.Security.Common" xmlns:bpf1="http://schemas.datacontract.org/2004/07/Bpf.Security.Authentication.Common"> <soapenv:Header> <InfoTag xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.w3.org/BaufestProductivityFramework"> <ClientIp xmlns="http://schemas.datacontract.org/2004/07/Bpf.Common.Service">200.125.145.10</ClientIp> <CompanyId xmlns="http://schemas.datacontract.org/2004/07/Bpf.Common.Service">1</CompanyId> <UserName xmlns="http://schemas.datacontract.org/2004/07/Bpf.Common.Service">someUser</UserName> </InfoTag> </soapenv:Header> <soapenv:Body> <tem:LogIn> <tem:token> <bpf:type> <bpf1:Description>someDesc</bpf1:Description> <bpf1:Id>1</bpf1:Id> <bpf1:Name>someDesc</bpf1:Name> </bpf:type> <bpf:password>somePass</bpf:password> <bpf:userName>someUser</bpf:userName> </tem:token> </tem:LogIn> </soapenv:Body> </soapenv:Envelope>\[/code\]this function send the header with a namespace, but there are more than one... I have to send them all?\[code\] private function __getHeaders() { $ns = 'http://schemas.xmlsoap.org/soap/envelope/'; //Namespace of the WS. $ip = $_SERVER['REMOTE_ADDR']; //Body of the Soap Header. $headerbody = array('ClientIp' => $ip, 'CompanyId' => 1, 'UserName' => 'someUser' ); //Create Soap Header. $header = new SOAPHeader($ns, 'InfoTag', $headerbody); return $header; } public function prepareWs(){ $wsdl="the web service"; $client = new SoapClient($wsdl, array('trace' => true)); //Set the Headers of Soap Client. $header = $this->__getHeaders(); $client->__setSoapHeaders($header);\[/code\]I try to send this body, I inspected exception with soap fault but the message only returns "bad request NULL NULL NULL".\[code\]$params = new stdClass(); $params = new SoapVar("<tem:token> <bpf:type xmlns:bpf="http://schemas.datacontract.org/2004/07/Bpf.Security.Common"> <bpf1:Description xmlns:bpf1="http://schemas.datacontract.org/2004/07/Bpf.Security.Authentication.Common">someDesc</bpf1:Description> <bpf1:Id xmlns:bpf1="http://schemas.datacontract.org/2004/07/Bpf.Security.Authentication.Common">1</bpf1:Id> <bpf1:Name xmlns:bpf1="http://schemas.datacontract.org/2004/07/Bpf.Security.Authentication.Common">someName</bpf1:Name> </bpf:type> <bpf:password xmlns:bpf="http://schemas.datacontract.org/2004/07/Bpf.Security.Common">somePass</bpf:password> <bpf:userName xmlns:bpf="http://schemas.datacontract.org/2004/07/Bpf.Security.Common">someUser</bpf:userName> </tem:token>", XSD_ANYXML); $response = $client->Login($params);}\[/code\]With CURL I can send this XML and recieved the XML response too, but with SOAPClient I can't send this request.I hope someone can help me, thanks.This is the code I can see with firebug, the only thing I get is "bad request". When I use __getLastRequest() I see the same...I guess the headers should not be sent correctly, however the __setSoapHeaders function returns true.This is the output:\[code\]<soap-env:envelope xmlns:ns1="http://tempuri.org/" xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"><soap-env:header><soap-env:contextinformation><item><key>ClientIp</key><value>127.0.0.1</value></item><item><key>CompanyId</key><value>1</value></item><item><key>UserName</key><value>someUser</value></item></soap-env:contextinformation></soap-env:header><soap-env:body><tem:login><tem:token><bpf:type><bpf1:description>someDesc</bpf1:description><bpf1:id>1</bpf1:id><bpf1:name>someName</bpf1:name></bpf:type><bpf:password>somePass</bpf:password><bpf:username>someUser</bpf:username></tem:token></tem:login></soap-env:body></soap-env:envelope>\[/code\]
 
Back
Top