2

抱歉,这可能是一件很容易的事情,但我几天以来都无法让它工作!

这是我的 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>

我怎样才能将它传递给我的肥皂服务器?我怎样才能解决那里的参数?

我尝试了很多版本,但没有任何帮助!例子:

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,"peter@xxxxxx.at");

所以 $no1 看起来像:

array(1) {
[0]=>
  object(c_adresse)#2 (2) {
    ["ExterneID"]=>
    int(33)
    ["Email"]=>
    string(15) "peter@xxxxxx.at"
  }
}

称呼:

$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。有时,当我使用参数的顺序和样式时,我让它以某种方式工作,并且只有当我不在“消息”部分中混合字符串、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"=>"peter@xxxxxx.at"));

工作正常!

4

1 回答 1

0

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

这在 WSDL 中缺失:

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

那么这个...

$response = $soap_client->insertAdresse($login,$ts,$token,array("ExterneID"=>22,"Email"=>"peter@xxxxxx.at"));

工作正常!

于 2013-02-28T16:05:07.880 回答