Извините, может быть, очень простая вещь, но я не могу заставить ее работать с тех пор!Как передать массив через php на php soap-сервер?
Это часть моего 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,"[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. Иногда, когда я играю с порядком и стилем параметров, я получаю его как-то работать, и только если я не смешиваю строку, 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]"));
работает отлично!
Показать фактический вызов SOAP, который вы делаете. –
благодарит Джека за вашу помощь, я думаю, что все сделано ... (см. Выше). Я сделаю еще несколько проверок ... – Peter
ответ на вопрос для наглядности. – SparKot