如何在php中读取传入的SOAP请求

时间:2013-11-06 13:49:16

标签: php web-services soap

我想阅读来自.NET WinForms应用程序的SOAP请求。

请求是:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
 <HotelPricesRQ xmlns="http://zelsoft.ru/">
  <HotelPricesRequest>
    <Requestor Login="ZLS" Password="DE52F10D5089096E5D83CA559153D64824AAB0B4" />
    <Conditions>
      <Condition CityID="0" CountryID="0" HotelID="0" AccommodationID="0" RoomCategoryID="0" RoomTypeID="0">
        <Created Begin="2013-10-31T00:00:00" End="2013-10-31T23:59:00+04:00" />
      </Condition>
    </Conditions>
  </HotelPricesRequest>
 </HotelPricesRQ>
</soap:Body>
</soap:Envelope>

那么如何获取请求者的登录名,密码和创建开始日期? 我实际上已经构建了响应,我们已经对它进行了测试,当他们向我发送请求时,他们得到了响应。我只是在没有阅读请求的情况下发送响应,但我必须阅读它并登录不同的用户并发送不同的响应。因此,我上面发布的请求的一个真实例子将非常受欢迎。

1 个答案:

答案 0 :(得分:0)

我不知道为什么我不写当时为了阅读请求而返回的解决方案, 但是在这里,以防万一有人需要它:

$soap_request = file_get_contents("php://input");

然后我就用PHP XML解析器函数解析它,如下所示:

$parser=xml_parser_create();
xml_parse_into_struct($parser,$soap_request,$request_array);
xml_parser_free($parser);

现在您将$request_array中的数据作为数组了。

您还可以使用SimpleXMLElement类从请求中获取数据。