2011-01-10 73 views
1

問候語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)

請幫助 - 也許我的朋友聖人將幫助別人的未來:)

回答

2

我不能完全肯定,但我似乎還沒有找到任何代碼段,將評價:<ns1:HotelSearchCriteria AvailOnlyIndicator="1"/> 也許你想要的東西一樣,

$qOTAhrq->AvailRequestSegments['AvailRequestSegment']['HotelSearchCriteria'] = array("AvailOnlyIndicator"=>"1"); 
+0

你好槍手所以最好實際使用數組來創建soap消息,因爲wsdlclass.php文件中沒有任何內容支持即時消息試圖實現的內容? – goingsideways 2011-01-10 04:49:11