I need to format/build a request for this SOAP "service":
http://api.notificationmessaging.com/NMSOAP/NotificationService?wsdl
Ideally I would like to use the native PHP SOAP class, but I'm beginning to wonder if this class is not the cause of my problems.
The manual provides this example:
<soapenv:Body>
<api:sendObject>
<arg0>
<content>
<entry>
<key>1</key>
<value>
<![CDATA[
<table width="600">
<tr>
<td>
<font size="2" face="Arial">Our powerful algorithms already
found a matching profile that matches your criteria:
<br>Celina72 </font>
<img src="http://mypath/to/my/image.gif" width="50"
height="50" border="0" />
</td>]]></value>
</entry>
</content>
<dyn>
<entry>
<key>FIRSTNAME</key>
<value>john</value>
</entry>
</dyn>
<email>[email protected]</email>
<encrypt>BdX7CqkmjSivyBgIcZoN4sPVLkx7FaXGiwsO</encrypt>
<notificationId>6464</notificationId>
<random>985A8B992601985A</random>
<senddate>2008-12-12T00:00:00</senddate>
<synchrotype>NOTHING</synchrotype>
<uidkey>EMAIL</uidkey>
</arg0>
</api:sendObject>
</soapenv:Body>
</soapenv:Envelope>
Here is the garbage that my PHP request produces (from __getLastRequest())
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://api.service.nsapi.emailvision.com/" xmlns:ns2="http://xml.apache.org/xml-soap">
<SOAP-ENV:Body>
<ns1:sendObject/>
<param1>AAAAAAAAAAAAAAAAAAAAAAAAAAA</param1>
<param2>123456789</param2>
<param3>BBBBBBBBBBBB</param3>
<param4>2013-09-09T00:00:00</param4>
<param5>NOTHING</param5>
<param6>EMAIL</param6>
<param7>
<ns2:Map>
<item>
<key>2</key>
<value>TEST</value>
</item>
</ns2:Map>
</param7>
<param8>
<ns2:Map>
<item>
<key>FIRSTNAME</key>
<value>John</value>
</item>
</ns2:Map>
<ns2:Map>
<item>
<key>LASTNAME</key>
<value>Smith</value>
</item>
</ns2:Map>
</param8>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
My call:
$client = new SoapClient('http://api.notificationmessaging.com/NMSOAP/NotificationService?wsdl', array( 'trace' => 1, 'exceptions' => 0 ) );
The params look like this (modified with dummy data):
$email = '[email protected]';
$encrypt = 'AAAAAAAAAAAAAAAAAAAAAAAAAAA';
$notification_id = 123456789;
$random = 'BBBBBBBBBBBB';
$senddate = '2013-09-09T00:00:00';
$synchrotype = 'NOTHING';
$uidkey = 'EMAIL';
$content = array();
$content[] = array(
2 => 'TEST'
);
$dyn = array();
$dyn[] = array(
'FIRSTNAME' => 'John'
);
$dyn[] = array(
'LASTNAME' => 'Smith'
);
$params = array(
'email' => $email,
'encrypt' => $encrypt,
'notificationId' => $notification_id,
'random' => $random,
'senddate' => $senddate,
'synchrotype' => $synchrotype,
'uidkey' => $uidkey,
'content' => $content,
'dyn' => $dyn
);
I then execute the request like this :
$res = $client->__soapCall( 'sendObject', array( $email, $encrypt, $notification_id, $random, $senddate, $synchrotype, $uidkey, $content, $dyn ) );
Why is PHP unable to format my request correctly? Is there a mor direct approach where I could write the XML "by hand" and then post it using cURL?
See Question&Answers more detail:
os