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

PHP で定義されているクラスへの応答でオブジェクトをマップするには、SoapClient に「クラスマップ」を提供する必要があることがわかりました。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 に答える