web services - PHP SOAP call issue using the SoapClient class
I am badly stuck in creating a client to consume this WSDL. (I am a novice when it comes to consuming webservices in PHP.) (For confidentiality reasons, I had to create a replica XML. I hope you understand.)
I use the following code to print out the functions and the types:
$client = new SoapClient("http://brique.in/wsdl.xml");
var_dump($client->__getFunctions());
var_dump($client->__getTypes());
I am trying to write php code to call the method inwardProcess. It accepts as an input, an XML file. I tried the following:
$xmlInput = htmlentities('<XML><Refno>H9999999</Refno><Type>getDetails</Type><UserID>BO</UserID></XML>');
$result = $client->__soapCall("inwardProcess", array($xmlInput));
It didn't work. After looking at the WSDL specifications, I also tried,
$xmlInput = htmlentities('<XML><Refno>H9999999</Refno><Type>getDetails</Type><UserID>BO</UserID></XML>');
class inwardProcess {
function inwardProcess($xmlInput)
{
$this->xmlInput = $xmlInput;
}
}
$inwardProcess = new inwardProcess($xmlInput);
$webservice = new SoapClient($url, $soap_options);
echo "Attempting Inward<br/>";
try {
var_dump($webservice->__getTypes());
//I also tried passing just $inwardProcess Object in place of array($inwardProcess)
$result = $webservice->__soapCall("inwardProcess", array($inwardProcess));
var_dump($result);
} catch (SOAPFault $f) {
echo "SOAPFault".$f;
}
I keep getting the error
Server was unable to process request. ---> Object reference not set to an instance of an object
Somehow I am not able to work it out. Any help would be highly appreciated since I am on a deadline.
Answer
Solution:
When structures are as complex as:
and response like
You have to create a class for each structure. In this case, it would be:
and finally call ...
Worked!