【问题标题】:how to send xml request using soap in php?如何在php中使用soap发送xml请求?
【发布时间】:2011-09-25 23:51:48
【问题描述】:

我正在开发新项目,对于这个项目,我必须使用 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>

【问题讨论】:

  • 您的具体问题是什么?你读过 php.net 上关于 SOAP 的manual 吗?

标签: php xml soap


【解决方案1】:

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

首先,创建对象:

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

然后调用方法:

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

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

希望对您有所帮助。

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

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

【讨论】:

  • 塔恩克斯。我已经按照你做了。但它给出了“内部服务器错误”。如何解决这个问题。我的请求在 Netbease SOAP UI 上正常运行。
  • @Hearaman - 内部服务器错误表明您的 PHP 中有语法错误。我建议您打开错误报告或查看服务器日志以找出错误所在。
  • EUREN';试试 { $soap = new SoapClient("acceptance.travelstreet.com/hotelsv3/components/…> true, 'exceptions' => true)); $res=$soap->__call("OTA_HotelAvailRQ", array($xml)); }
  • catch(SoapFault $fault) { echo $fault->getMessage(); } ?>
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2011-11-13
    • 1970-01-01
    • 2012-07-25
    • 1970-01-01
    • 2021-08-16
    • 2016-11-07
    • 1970-01-01
    • 2016-09-01
    • 2016-03-25
    相关资源
    最近更新 更多