mmlr38 Posted August 24, 2007 Share Posted August 24, 2007 I am having problems passing complex data types from a SOAP server constructed using the built-in PHP5 SOAP extension to a SOAP client using nusoap.php or PEAR::SOAP. This is what the WSDL file looks like: <?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions targetNamespace="http://www.example.com/services/EorthoContent" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://www.example.com/services/EorthoContent" xmlns:intf="http://www.example.com/services/EorthoContent" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <wsdl:types> <schema targetNamespace="http://www.example.com/services/EorthoContent" xmlns="http://www.w3.org/2001/XMLSchema"> <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/> <complexType name="ArrayOfArrayOf_xsd_string"> <complexContent> <restriction base="soapenc:Array"> <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[][]"/> </restriction> </complexContent> </complexType> <complexType name="ArrayOf_xsd_string"> <complexContent> <restriction base="soapenc:Array"> <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[]"/> </restriction> </complexContent> </complexType> </schema> </wsdl:types> .... and the rest of the functions The complex type that isn't getting processed correctly is the "ArrayOfArrayOf_xsd_string" or xsd:string[][] Here's an example of what the data should look like when I do a var_dump() on the returned data from a function call: array(6) { [0]=> array(3) { [0]=> string(32) "775ab1f814d5190fb55685dbe1c6f7bd" [1]=> string(11) "Kyphoplasty" [2]=> string(115) "http://www.example.com/Booklet?ClinicID=6beb792d81342ab4b7b7bed7d91a7d79&TopicID=775ab1f814d5190fb55685dbe1c6f7bd" } [1]=> array(3) { [0]=> string(32) "4cdc554cbf052d95d0c6218dca340a98" [1]=> string(21) "Scheuermann's Disease" [2]=> string(115) "http://www.example.com/Booklet?ClinicID=6beb792d81342ab4b7b7bed7d91a7d79&TopicID=4cdc554cbf052d95d0c6218dca340a98" } [2]=> array(3) { [0]=> string(32) "012d86ee608acac7457ac979ae7d550d" [1]=> string(28) "Spinal Compression Fractures" [2]=> string(115) "http://www.example.com/Booklet?ClinicID=6beb792d81342ab4b7b7bed7d91a7d79&TopicID=012d86ee608acac7457ac979ae7d550d" } [3]=> array(3) { [0]=> string(32) "e2017d1a959a7159fc3514414c705aa3" [1]=> string(24) "Thoracic Disc Herniation" [2]=> string(115) "http://www.example.com/Booklet?ClinicID=6beb792d81342ab4b7b7bed7d91a7d79&TopicID=e2017d1a959a7159fc3514414c705aa3" } [4]=> array(3) { [0]=> string(32) "4c75b421ca09b5cb875c90e13c68d969" [1]=> string(22) "Thoracic Spine Anatomy" [2]=> string(115) "http://www.example.com/Booklet?ClinicID=6beb792d81342ab4b7b7bed7d91a7d79&TopicID=4c75b421ca09b5cb875c90e13c68d969" } [5]=> array(3) { [0]=> string(32) "cd057911c3a4cd05b8a79cd5d8e3a05a" [1]=> string(14) "Vertebroplasty" [2]=> string(115) "http://www.example.com/Booklet?ClinicID=6beb792d81342ab4b7b7bed7d91a7d79&TopicID=cd057911c3a4cd05b8a79cd5d8e3a05a" } } But here's what I am getting: array(1) { ["item"]=> array( { [0]=> string(32) "775ab1f814d5190fb55685dbe1c6f7bd" [1]=> string(11) "Kyphoplasty" [2]=> string(115) "http://www.example.com/Booklet?ClinicID=6beb792d81342ab4b7b7bed7d91a7d79&TopicID=775ab1f814d5190fb55685dbe1c6f7bd" [3]=> array(3) { [0]=> string(32) "4cdc554cbf052d95d0c6218dca340a98" [1]=> string(21) "Scheuermann's Disease" [2]=> string(115) "http://www.example.com/Booklet?ClinicID=6beb792d81342ab4b7b7bed7d91a7d79&TopicID=4cdc554cbf052d95d0c6218dca340a98" } [4]=> array(3) { [0]=> string(32) "012d86ee608acac7457ac979ae7d550d" [1]=> string(28) "Spinal Compression Fractures" [2]=> string(115) "http://www.example.com/Booklet?ClinicID=6beb792d81342ab4b7b7bed7d91a7d79&TopicID=012d86ee608acac7457ac979ae7d550d" } [5]=> array(3) { [0]=> string(32) "e2017d1a959a7159fc3514414c705aa3" [1]=> string(24) "Thoracic Disc Herniation" [2]=> string(115) "http://www.example.com/Booklet?ClinicID=6beb792d81342ab4b7b7bed7d91a7d79&TopicID=e2017d1a959a7159fc3514414c705aa3" } [6]=> array(3) { [0]=> string(32) "4c75b421ca09b5cb875c90e13c68d969" [1]=> string(22) "Thoracic Spine Anatomy" [2]=> string(115) "http://www.example.com/Booklet?ClinicID=6beb792d81342ab4b7b7bed7d91a7d79&TopicID=4c75b421ca09b5cb875c90e13c68d969" } [7]=> array(3) { [0]=> string(32) "cd057911c3a4cd05b8a79cd5d8e3a05a" [1]=> string(14) "Vertebroplasty" [2]=> string(115) "http://www.example.com/Booklet?ClinicID=6beb792d81342ab4b7b7bed7d91a7d79&TopicID=cd057911c3a4cd05b8a79cd5d8e3a05a" } } } Any idea why it changes the structure putting that "item" as the first element in the array and then putting everything else in the array inside it? I am just returning an array with a structure like so" $ret[0][0] = "some string here"; $ret[0][1] = "some string here"; $ret[1][0] = "some string here"; $ret[1][1] = "some string here"; ... return $ret; I have tried creating a SoapVar like this: $ret_final = new SoapVar($ret, SOAP_ENC_OBJECT, "ArrayOfArray_xsd_string", "http://www.example.com/services/EorthoContent"); return $ret_final; But I still get the same incorrect data structure. Suggestions? Link to comment https://forums.phpfreaks.com/topic/66535-php5-soap-complex-data-types/ Share on other sites More sharing options...
faheemhameed Posted January 2, 2009 Share Posted January 2, 2009 Hi, Did you solve this issue? I am having a similar issue. Please let me know. Thanks, Hameed Link to comment https://forums.phpfreaks.com/topic/66535-php5-soap-complex-data-types/#findComment-727939 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.