PHP:如何使用complexTypes执行SOAP请求?

时间:2010-11-22 16:53:11

标签: php soap complextype

我正在使用Php默认的SoapClient进行通信。我必须发送看起来像这样的数据。

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

唯一的问题是如何在以下代码中添加complexType“GenericPublication”,其他一切正常。

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

2 个答案:

答案 0 :(得分:0)

我只是根据您提供的示例猜测(有关该服务的更多信息会有所帮助),但基本上您只需执行以下操作:

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

请在此处查看我的回答:Passing user-defined types in PHP SOAP了解更多详情

答案 1 :(得分:0)

您可以尝试其他答案,但我通过直接发送XML解决了我的问题,这对我有用。

$ myxml =“您要在肥皂请求正文中发送 的所有xml ”;

$ xmlvar = new SoapVar($ myxml,XSD_ANYXML);

$ params-&gt; xmlDocument =(object)$ xmlvar;

$ save_result = $ client-&gt; yourFunctionName($ xmlvar);