PHP: Как сделать запрос SOAP с complexTypes? - PullRequest
0 голосов
/ 22 ноября 2010

Я использую Php SoapClient по умолчанию для связи. Я должен отправить данные, которые выглядят примерно так.

 <payloadPublication d2p1:type="GenericPublication" >
     ...
 </payloadPublication>

Единственная проблема - как добавить complexType "GenericPublication" в следующем коде, все остальное работает.

 $payloadPublication = array('payloadPublication'=> "subtags/data");

Ответы [ 2 ]

0 голосов
/ 03 декабря 2010

Вы можете попробовать другие ответы, но я решил свою проблему, отправив XML напрямую, и это сработало для меня.

$ myxml = "все xml, которые вы хотите отправить в теле запроса Soap ";

$ xmlvar = новый SoapVar ($ myxml, XSD_ANYXML);

$ params-> xmlDocument = (объект) $ xmlvar;

$ save_result = $ client-> yourFunctionName ($ xmlvar);

0 голосов
/ 22 ноября 2010

Я просто догадываюсь здесь, основываясь на приведенном вами примере (больше информации об услуге будет полезно), но в основном вы просто сделаете что-то вроде этого:

class MYGenericPublication {
  public $subtags;
  public $name;
}

$new_pub = new MYGenericPublication;
$new_pub->subtags = array('tagA', 'tagB');
$new_pub->name = 'HiThere';

$client = new SoapClient('foo?wsdl', classmap=array('GenericPublication' => 'MYGenericPublication'));
$client->doSomethingWithPublication(array('payloadPublication' => $new_pub));

$my_pub = $client->findPublication(array('name' => 'HiThere'));
echo $my_pub->subtags[0]; // tagA
echo $my_pub->name; // HiThere
echo get_class($my_pub); // MYGenericPublication

Смотрите мой ответ здесь: Передача пользовательских типов в PHP SOAP для более подробной информации

...