привет стека переполнения.
Я возился с клиентом SOAP с использованием собственного расширения PHP5. Сообщение SOAP, которое я пытаюсь создать, использует сложные типы данных.
До сих пор я создал файл класса с помощью инструмента wsdl2php (http://www.urdalen.no/wsdl2php/). Однако я успешно создал части моего сообщения SOAP, я уверен, что я делаю это неправильно. См. Ниже:
Сообщение, которое я хочу создать:
<soap:Envelope>
<soap:Body>
<OTA_HotelAvailRQ Version="1.0" AvailRatesOnly="true" TimeStamp="2010-10-06T16:14:26+08:00">
<POS>
<Source>
<RequestorID ID="test" Type="10"/>
</Source>
</POS>
<AvailRequestSegments>
<AvailRequestSegment AvailReqType="NonRoom">
<HotelSearchCriteria AvailableOnlyIndicator="1">
<Criterion>
<HotelRef HotelCode="PCBCMS"/>
<StayDateRange Start="2010-10-06" End="2010-11-06"/>
</Criterion>
</HotelSearchCriteria>
</AvailRequestSegment>
</AvailRequestSegments>
</OTA_HotelAvailRQ>
</soap:Body>
</soap:Envelope>
С помощью следующего кода я могу создать часть сообщения, однако, когда дело доходит до:
// Hotel Availability
$qOTAhrq = new OTA_HotelAvailRQ();
$qOTAhrq->AvailRequestSegments['AvailRequestSegment'] = array('AvailReqType' => 'NonRoom');
$qOTAhrq->AvailRequestSegments['AvailRequestSegment']['HotelSearchCriteria'] = array();
$qOTAhrq->AvailRequestSegments['AvailRequestSegment']['HotelSearchCriteria']['Criterion'] = array();
Следующее сообщение выдается с помощью кода выше. Что происходит не так: (
<ns1:AvailRequestSegments>
<ns1:AvailRequestSegment AvailReqType="NonRoom">
<ns1:HotelSearchCriteria/>
</ns1:AvailRequestSegment>
</ns1:AvailRequestSegments>
needs to be
<ns1:AvailRequestSegments>
<ns1:AvailRequestSegment AvailReqType="NonRoom">
<ns1:HotelSearchCriteria AvailOnlyIndicator="1"/>
</ns1:AvailRequestSegment>
</ns1:AvailRequestSegments>
Надеюсь, мой вопрос достаточно обширный, чтобы понять, чего я пытаюсь достичь. Использую ли я правильный метод для создания моего сообщения XML-мыла, или я не должен использовать массивы таким образом? Есть ли способ, где я могу напечатать что-то вроде:
$ qOTAhrq-> В наличииRequestSegments-> В наличииRequestSegment = array ('AvailabilityReqType =' nonRoom ');
ссылки: мой файл классов: файл классов wsdl (создан wsdl2php)
, пожалуйста, помогите - возможно, мое сообщение поможет кому-то еще в будущем:)