代码之家  ›  专栏  ›  技术社区  ›  Sharjeel

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

  •  0
  • Sharjeel  · 技术社区  · 14 年前

    我使用Php默认SoapClient进行通信。我必须发送这样的数据。

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

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

     $payloadPublication = array('payloadPublication'=> "subtags/data");
    
    2 回复  |  直到 14 年前
        1
  •  0
  •   Community CDub    8 年前

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

    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 更多细节

        2
  •  0
  •   k4mrcy Sharj    13 年前

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

    $myxml=“要发送的所有xml 在Soap请求主体中 ";

    $xmlvar=新的SoapVar($myxml,XSD_ANYXML);

    $params->xmlDocument=(对象)$xmlvar;

    $save_result=$client->您的函数名($xmlvar);