2

我正在尝试从 Web 服务中获取值。

响应格式为..

<campaign Id="200"> <name> test </name> </campaign>

PHP 代码

SoapClient( "WSDL");

$return = $client->GetCampaigns('Username', 'Password' );

然而,当我尝试访问返回时,我只得到一个带有 name 属性的 stdClass 。

  public 'Campaign' => 
array
  0 => 
    object(stdClass)[46]
      public 'Name' => string 'chris test' (length=10)
4

1 回答 1

1

我发现我必须向 SoapClient 提供一个“类映射”,以使其将响应中的对象映射到 PHP 中定义的类。在 WSDL 中,类型名称通常是小写驼峰式(以小写开头,其余为驼峰式)。

class MY_Campaign {
    private $name;
    function getName () { return $this->name; }
}

$options = array(
        'classmap' => array(
                'campaign' => 'MY_Campaign',
            );
    );
$client = new SoapClient('http://example.com/yourservice?wsdl', $options);
$return = $client->GetCampaigns ();

如果我有 WSDL,我可能会提供更好的答案。类映射取决于 WSDL 文件中的类型定义。

于 2011-11-10T10:31:44.723 回答