Как передать параметр объекта в вызов метода SOAP в PHP? - PullRequest
1 голос
/ 26 августа 2011

Я пытаюсь сделать запрос мыла, и метод, который я вызываю, принимает любое количество объектов, определяемых этим:

<xs:complexType name="thing">
  <xs:sequence>
    <xs:element minOccurs="0" name="string1" type="xs:string"/>
    <xs:element minOccurs="0" name="string2" type="xs:string"/>
    <xs:element minOccurs="0" name="string3" type="xs:long"/>
  </xs:sequence>
</xs:complexType>

Как мне создать подобный объект в PHP и передать его методу soap? Прямо сейчас (не работает) код, который я имею, выглядит следующим образом:

$obj->string1 = 'something';
$obj->string2 = 'something';
$obj->string3 = 'something';
$param = new SoapParam(new SoapVar($obj, SOAP_ENC_OBJECT, 'method', 'http://ns'), 'paramName');

$soapClient->method($param);

UPDATE:

Это тело запроса показанного метода:

<SOAP-ENV:Body>
  <ns2:method xsi:type="ns1:method">
    <string1>something</string1>
    <string2>something</string2>
    <string3>something</string3>
  </ns2:placeHolds>
</SOAP-ENV:Body>

Если я просто передам $ obj вместо создания SoapParam, это тело в запросе:

<SOAP-ENV:Body>
  <ns1:method/>
</SOAP-ENV:Body>

1 Ответ

1 голос
/ 15 февраля 2014
$client = new SoapClient('endpoint');

$sequence->string1 = 'something';
$sequence->string2 = 'something';
$sequence->string3 = 'something';

$obj = array();
$obj['sequence'] = $sequence;

$param = new SoapParam(new SoapVar($obj, SOAP_ENC_OBJECT), 'paramName');

$client->__soapCall('method',array($param));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...