2013-02-28 118 views
2

对不起,也许是一件非常简单的事情,但是我从几天起就无法工作!如何通过PHP传递数组到PHP肥皂服务器?

这是我的WSDL的一部分:

<xsd:complexType name="PERSON"> 
<xsd:sequence> 
    <xsd:element name="ExterneID" minOccurs="0" type="xsd:int" /> 
    <xsd:element name="Email" type="xsd:string" /> 
    ... 
</xsd:sequence> 
</xsd:complexType> 

<message name="insertAdresse"> 
    <part name="BmLogin" type="xsd:string" /> 
    <part name="TS" type="xsd:int" /> 
    <part name="UT" type="xsd:string" /> 
    <part name="Person" type="typens:PERSON"/> 
</message> 

如何传递这个我SOAP服务器?我该如何解决那些问题?

我试了很多版本,但没有什么帮助!例如:

class c_adresse 
{ 
    public $ExterneID; 
    public $Email; 

    public function __construct($ExterneID,$Email) 
    { 
     $this->ExterneID = $ExterneID; 
     $this->Email = $Email; 
    } 
} 

$no1 = array(); 
$no1[] = new c_adresse(33,"[email protected]"); 

所以$ NO1的样子:

array(1) { 
[0]=> 
    object(c_adresse)#2 (2) { 
    ["ExterneID"]=> 
    int(33) 
    ["Email"]=> 
    string(15) "[email protected]" 
    } 
} 

电话:

$response = $soap_client->insertAdresse($login,$ts,$token,$no1); 

错误消息:

PHP Fatal error: SOAP-ERROR: Encoding: object hasn't 'Email' property in /home/peter/Desktop/soap.php on line 41 
PHP Fatal error: Uncaught SoapFault exception: [Client] SOAP-ERROR: Encoding: object hasn't 'Email' property in /home/peter/Desktop/soap.php:41 

如何设计对象/数组( ?)传递给肥皂服务器?

在服务器上,我无法寻址$ daten。有时,当我玩弄参数的顺序和样式时,我会以某种方式工作,并且只有在“消息”部分中不混合string,int和数组(complexType [PERSON])的情况下。 但我不能满足$回到名单Daten或$ BmLogin是空的,等等...

function insertAdresse($BmLogin,$TS,$UT,$daten) 

没关系,我已经找到了解决方案!

我改变了这个:

<xsd:element name="PERSON" type="PersonType"/> 
<xsd:complexType name="PersonType"> 

那么这...

$response = $soap_client->insertAdresse($login,$ts,$token,array("ExterneID"=>22,"Email"=>"[email protected]")); 

工作正常!

+0

显示您正在进行的实际SOAP调用。 – 2013-02-28 15:34:09

+0

感谢杰克的帮助,我认为这是完成了...(见上文)我会做更多的检查... – Peter 2013-02-28 15:50:40

+1

发布一个答案为清晰。 – SparKot 2013-02-28 15:54:40

回答

0

好的,我找到了解决方案!

这是在WSDL丢失:

<xsd:element name="PERSON" type="typens:PersonType"/> 
<xsd:complexType name="PersonType"> 

那么这...

$response = $soap_client->insertAdresse($login,$ts,$token,array("ExterneID"=>22,"Email"=>"[email protected]")); 

工作正常!