复杂的SOAP消息使用wsd2php生成的文件

问题描述:

问候语s​​tackoverflow。复杂的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"); 
+0

你好枪手所以最好实际使用数组来创建soap消息,因为wsdlclass.php文件中没有任何内容支持即时消息试图实现的内容? – goingsideways 2011-01-10 04:49:11