Создайте запрос SOAP с атрибутом элемента, используя Zend_Soap_Client и stdObject - PullRequest
1 голос
/ 20 декабря 2011

Я вызываю сервисную ведьму, и среди многих других параметров требуется запись типа (Взята из soapUI):

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

Как мне получить Zend_Soap_Client для отправки типа:атрибута в элементе Key?

Поскольку это всего лишь часть довольно большого сервиса, я создаю классы для создания структуры данных, например:

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

class Body {
  public $ReadWorkerRequest;

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

Однако я недаже получить отправку запроса, когда PHP завершается неудачно, говоря мне: «SOAP-ERROR: Encoding: объект не имеет свойства« Key »»

Итак, мой вопрос, как мне создать структуру объекта, возможно, сподраздел, созданный в виде массива, который будет соблюдать это?

Или структура объекта правильная, и мне нужно использовать classmap или SoapVar (я пробовал некоторые комбинации, но безуспешно)

Счастливых праздников для тех, у кого они есть!: -)

1 Ответ

0 голосов
/ 16 января 2012

Я потратил много часов, пытаясь решить эту проблему, но лучшее, что я мог придумать, это использовать хак XSD_ANYXML, например:

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

Хотя это довольно неприятный хак.Надеюсь, кто-то еще сможет предложить лучшее решение.

...