复杂的SOAP消息使用wsd2php生成的文件
问题描述:
问候语stackoverflow。复杂的SOAP消息使用wsd2php生成的文件
我一直在摆弄关于使用PHP5的原生扩展SOAP客户端。我尝试创建的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 SOAP消息或者我应该不会使用数组这样?是有没有办法,我可以输入类似:
$ qOTAhrq-> AvailRequestSegments-> AvailRequestSegment =阵列( 'AvailReqType =' nonRoom');
链接:我的类文件:wsdl class file (created by wsdl2php)
请帮助 - 也许我的朋友圣人将帮助别人的未来:)
答
我不能完全肯定,但我似乎还没有找到任何代码段,将评价:<ns1:HotelSearchCriteria AvailOnlyIndicator="1"/>
也许你想要的东西一样,
$qOTAhrq->AvailRequestSegments['AvailRequestSegment']['HotelSearchCriteria'] = array("AvailOnlyIndicator"=>"1");
你好枪手所以最好实际使用数组来创建soap消息,因为wsdlclass.php文件中没有任何内容支持即时消息试图实现的内容? – goingsideways 2011-01-10 04:49:11