使用Zend_Soap_Client和stdObject使用element属性创建SOAP请求

时间:2011-12-20 14:32:15

标签: php zend-soap

我在许多其他参数中调用服务女巫需要一个条目(取自soapUI):

  <v110:ReadWorkerRequest>
     <v111:Key v111:type="INITIALS">RKM</v111:Key>
  </v110:ReadWorkerRequest>

如何让Zend_Soap_Client在Key元素中发送type-attribute?

由于这只是一个相当大的服务的一部分,我一直在创建类来创建数据结构,如:

class Key {
  public $_ = 'RKM;
  public $type = 'INITIALS';
}

class Body {
  public $ReadWorkerRequest;

  public function __construct() {
    $this->ReadWorkerRequest = new Key();
  }
}

但是,我甚至没有发送请求,因为PHP失败了,告诉我:“SOAP-ERROR:编码:对象没有'Key'属性”

所以我的问题是,如何创建一个对象结构,可能有一个子组件创建为一个会尊重这个的数组?

或者对象结构是否正确,我需要使用classmap或SoapVar(我尝试了一些组合,但没有取得任何成功)

节日快乐,对于那些拥有它们的人来说! : - )

1 个答案:

答案 0 :(得分:0)

我花了很多时间试图解决这个问题,但我能想到的最好的就是使用XSD_ANYXML黑客,例如:

$this->ReadWorkerRequest = new SoapVar( '<v111:Key v111:type="INITIALS">RKM</v111:Key>', XSD_ANYXML );

虽然这是一个非常讨厌的黑客。希望其他人可以提供更好的解决方案。