0

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

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

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

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

2 回答 2

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

请在此处查看我的答案:在 PHP SOAP 中传递用户定义的类型以获取更多详细信息

于 2010-11-22T18:49:08.823 回答
0

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

$myxml = "你想在 Soap 请求正文中发送的所有 xml ";

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

$params->xmlDocument = (object)$xmlvar;

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

于 2010-12-03T08:39:55.473 回答