Here is the data from wsdl
<s:element name="CreateDraftLead">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="formId" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="FirstName" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="LastName" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="Gender" nillable="true" type="s:int"/>
<s:element minOccurs="1" maxOccurs="1" name="AgeGroup" nillable="true" type="s:int"/>
<s:element minOccurs="0" maxOccurs="1" name="MobilePhone" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="Birthday" nillable="true" type="s:dateTime"/>
<s:element minOccurs="0" maxOccurs="1" name="District" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="email" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Region" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="LocationId" nillable="true" type="s:int"/>
<s:element minOccurs="1" maxOccurs="1" name="LeadSourceId" nillable="true" type="s:int"/>
<s:element minOccurs="1" maxOccurs="1" name="CompanyId" nillable="true" type="s:int"/>
<s:element minOccurs="1" maxOccurs="1" name="SourceCampaignId" nillable="true" type="s:int"/>
<s:element minOccurs="1" maxOccurs="1" name="AllowEmail" nillable="true" type="s:boolean"/>
<s:element minOccurs="0" maxOccurs="1" name="Questions" type="tns:ArrayOfQuestion"/>
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="ArrayOfQuestion">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="Question" nillable="true" type="tns:Question"/>
</s:sequence>
</s:complexType>
<s:complexType name="Question">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Key" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Value" type="s:string"/>
</s:sequence>
</s:complexType>
And here is my attempt code
$client = new SoapClient("http://demo/demo.asmx?wsdl", array('trace' => 1, "exception" => 0));
$data = array(
'formId' => 1,
'LocationId' => 1,
'FirstName' => 'test',
'LastName' => 'test',
'MobilePhone' => 11111111,
'email' => '[email protected]',
'AllowEmail' => 0,
'Region' => 'HK',
'LeadSourceId' => 11,
'Questions' => array(
"Question" => array("AgeGroup" => 10),
"Question" => array("Gender" => 1),
"Question" => array("Remarks" => 'test'),
"Question" => array("Are you currently a member of any yoga or fitness centre? " => 'Yes'),
)
);
$result = $client->CreateDraftLead(array('parameters' => $data));
var_dump($result);
Is this caused by the structure of the input data, how to fix that? Thanks for helping.
Error message:
Fatal error: Uncaught SoapFault exception: [soap:Server] Server was unable to process request. ---> Object reference not set to an instance of an object. in C:\xampp\htdocs\test_soap.php:60 Stack trace: #0 C:\xampp\htdocs\test_soap.php(60): SoapClient->__call('CreateDraftLead', Array) #1 C:\xampp\htdocs\test_soap.php(60): SoapClient->CreateDraftLead(Array) #2 {main} thrown in C:\xampp\htdocs\test_soap.php on line 60
Updated:
Thanks for helping. right now can send to server
<?php
$client = new SoapClient("http://demo/demo.asmx?wsdl");
$data = array(
'formId' => '1',
'FirstName' => 'test',
'LastName' => 'test',
//'Gender' => 1,
//'AgeGroup' => 10,
'MobilePhone' => '11111111',
'Birthday' => null,
'District' => 'HK',
'email' => '[email protected]',
'Region' => 'HK',
'LocationId' => 1,
'LeadSourceId' => 11,
'CompanyId' => null,
'SourceCampaignId' => null,
'AllowEmail' => false,
'Questions' => array(
"Question" => array("AgeGroup" => 10),
"Question" => array("Gender" => 1),
"Question" => array("Remarks" => 'test'),
"Question" => array("Are you currently a member of any yoga or fitness centre? " => 'Yes'),
)
);
$result = $client->__soapCall("CreateDraftLead", array($data));
var_dump($result);
?>
Problems remain are :
1) AllowEmail takes boolean but either 0,1,true,false return error : Invalid column name 'false' / Invalid column name 'true' from the server , but it is not exception
2) is minOccurs='1' means must provide? as tested can ignore the field and server still return success
Thanks for great effort.
Please try out the following (not tested):
<?php
$client = new SoapClient("http://demo/demo.asmx?wsdl", array('trace' => 1, "exception" => 0));
$data = array(
'formId' => 1,
'LocationId' => 1,
'FirstName' => 'test',
'LastName' => 'test',
'MobilePhone' => 11111111,
'email' => '[email protected]',
'AllowEmail' => 0,
'Region' => 'HK',
'LeadSourceId' => 11,
'Questions' => array(
"Question" => array("AgeGroup" => 10),
"Question" => array("Gender" => 1),
"Question" => array("Remarks" => 'test'),
"Question" => array("Are you currently a member of any yoga or fitness centre? " => 'Yes'),
)
);
$result = $client->__soapCall("CreateDraftLead", array($data));
var_dump($result);
Also it seems that you do not provide all neccessary infomration like Gender
and so on.. you should check this aswell.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With