如何在php中使用soap发送xml请求?

时间:2011-06-30 13:17:14

标签: php xml soap

我正在开发新项目,对于这个项目,我必须使用SOAP。我是这个SOAP的新手。 我重写了我的项目文档。在该文档中,它具有WSDL和XML请求。通过使用boath WSDL和XML请求,我如何发送XML请求。 Bellow我正在编写WSDL和XML请求。请帮帮我。

三江源。


WSDL:

http://acceptance.travelstreet.com/hotelsv3/components/hotels_ws.cfc?wsdl

XML请求:

<?xml version="1.0" encoding="utf-8"?>
<OTA_HotelAvailRQ Version="1.0">
   <POS>
    <Source>
     <UniqueId Id="username:password" />
    </Source>
   </POS>
   <AvailRequestSegments>
    <AvailRequestSegment>
     <StayDateRange End="2011-08-15" Start="2011-08-14" />
     <RoomStayCandidates>
      <RoomStayCandidate Quantity="1">
       <GuestCounts>
        <GuestCount AgeQualifyingCode="10" Count="1" />
       </GuestCounts>
      </RoomStayCandidate>
     </RoomStayCandidates>
     <HotelSearchCriteria>
      <Criterion>
       <HotelRef Destination="East London, South Africa" CityCode="" CountryCode="" HotelName="" MinHotelRating="1"/>
       <SearchCurrency>EUR</SearchCurrency>
       <AdditionalInfo Value="1" />
       <Language>EN</Language>
      </Criterion>
     </HotelSearchCriteria>
    </AvailRequestSegment>
   </AvailRequestSegments>
  </OTA_HotelAvailRQ>

2 个答案:

答案 0 :(得分:9)

我建议您阅读PHP's SoapClient。 PHP手册中有很多很好的例子。

为了帮助您入门,请创建对象:

$client = new SoapClient('http://www.example.com/end_point.wsdl');

然后调用方法:

$result = $client->SomeFunction($data);

其中SomeFunction是您要在服务上调用的方法名称,$ data是表示您要发送的XML数据结构的PHP数组。

希望有所帮助。

[编辑] 只是为了澄清OP的进一步问题:

使用PHP SOAPClient时,您不需要创建实际的XML代码。您需要将数据放入PHP数组中,SOAPClient会将它转换为XML。应为XML元素名称命名数组键,并且数组值是元素值。将嵌套数组用于嵌套XML元素。

答案 1 :(得分:1)

对于属性,必须使用XSD_ANYXML调用SoapVar http://php.net