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


How to read incoming SOAP request in php

我想读取来自.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>

那么如何获取请求者的登录名、密码和创建开始日期呢?我实际上已经构建了响应,我们已经对其进行了测试,当他们向我发送请求时,他们得到了响应。我只是发送响应而不阅读请求,但我必须阅读它并登录不同的用户并发送不同的响应。因此,我将非常感谢我上面发布的请求的真实示例。

我不知道

为什么我没有写出我当时为阅读请求而得到的解决方案,但在这里,以防有人需要它:

$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 类从请求中获取数据。