I am new to SOAP and dealing with a web service where it would seem no one has interfaced using PHP previously. They have no example code excepting C# but I do have that.
for debug purpose you can use Fiddler web debuger. I found it quite useful. In these days I'm working on a project based on .net web services, and I have to consume them via PHP. This is a working (and very simple) piece of code. Hope this can help you. The purpose of this piece of code is to check a status on a specific record.
This is the wsdl
POST /b1synccontext.asmx HTTP/1.1
Host: 00.00.00.0
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/QueueEntryGetStatus"
<?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:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<QueueEntryGetStatus xmlns="http://tempuri.org/">
<BuffID>int</BuffID>
</QueueEntryGetStatus>
</soap:Body>
</soap:Envelope>
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:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<QueueEntryGetStatusResponse xmlns="http://tempuri.org/">
<QueueEntryGetStatusResult>int</QueueEntryGetStatusResult>
</QueueEntryGetStatusResponse>
</soap:Body>
</soap:Envelope>
This is the php code
$client = new SoapClient("http://YOURIP/yourservice.asmx?wsdl",array(
'exceptions'=>true,
'cache_wsdl'=>WSDL_CACHE_NONE,
'encoding'=>'utf-8'));
$params = array(
'BuffID' => 134
);
try
{
$result = $client->QueueEntryGetStatus($params);
$status = $result->QueueEntryGetStatusResult;
/*do something*/
}
catch (Exception $e)
{
$e -> getMessage();
/*do something*/
}
I usually use the methods getFunctions and getLastRequest to help me sort things out. First I look at the function list and WSDL. Sometimes the WSDL and/or server is not setup/configured/coded properly. So this function list may be useless. The WSDL file should be definitive, but alas, lame coders, etc...
So sometimes I have to take a stab in the dark, look at the error, and then look at the last request. With this you can see the actual XML that was produced. Compare that to some working XML examples.
This has proven most helpful when dealing with coders who don't want to write docs. By the way, they should give XML examples - not show how to generate XML using language XYZ. There may be more useful infos in the PHP/Soap documentation
HTH