抱歉,这可能是一件很容易的事情,但我几天以来都无法让它工作!
这是我的 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"));
工作正常!