Вызов метода SOAP с PHP для конкретной службы - PullRequest
2 голосов
/ 22 апреля 2009

Извините, что должен это сделать, но я не получаю любви от людей, которые управляют этим конкретным веб-сервисом. Я никогда раньше не использовал SOAP.

Вот метод, который я пытаюсь вызвать

А вот код, который, я думаю, должен работать

    public function soapTest(){

            echo "start <br />";
            use_soap_error_handler(true);
            $client = new SoapClient("https://cwi.rezexchange.com:9991/?wsdl");

                // here's the problem. What goes in the parenthesis?
            $result = $client->CwiRateDetails(????);

            echo($result);
            echo "<br /> end";

        }

Теперь я предполагаю, что это говорит мне, что должна содержать скобка.

POST /Service.asmx HTTP/1.1
Host: cwi.rezexchange.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://hotelconcepts.com/CwiRateDetails"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <CwiRateDetails xmlns="http://hotelconcepts.com/">
      <PropertyCode>string</PropertyCode>
      <DateFrom>dateTime</DateFrom>
      <DateTo>dateTime</DateTo>
      <RatePlan>string</RatePlan>
      <RoomType>string</RoomType>
      <PromotionalRates>boolean</PromotionalRates>
    </CwiRateDetails>
  </soap:Body>
</soap:Envelope>

Я думаю, что-то вроде

$result = $client->CwiRateDetails($PCode, $DateFrom, $DateTo, $RatePlan, $RoomType, false);

Должно работать. Но я не знаю, какой формат даты, какие типы номеров или как ссылаться на тарифный план.

Теперь. Прежде чем я начну рассказывать им об этом по электронной почте, неужели я ошибаюсь, думая, что им нужно загрузить еще больше информации? Или есть какая-то хитрость SOAP, которую я могу использовать, чтобы откуда-то получить эту информацию?

Ответы [ 4 ]

5 голосов
/ 22 апреля 2009

Попробуйте

$result = $client->CwiRateDetails(array(
    'PropertyCode'     => ...,
    'DateFrom'         => ...,
    'DateTo'           => ...,
    'RatePlan'         => ...,
    'RoomType'         => ...,
    'PromotionalRates' => ...,
));

Вам нужно будет сериализовать ваши значения даты-времени в DateFrom и DateTo и логическое значение в PromotionalRates в соответствии со спецификациями схемы XML:

  • логическое : true = 'true' или 1 и false = 'false' или 0
  • dateTime : YYYY-MM-DD T hh:mm:ss Z для UTC или YYYY-MM-DD T hh:mm:ss(+/-)hh:mm для местного времени, включая информацию о часовом поясе; информация о часовом поясе необязательна
1 голос
/ 22 апреля 2009

формат даты на самом деле dateTime (который является типом формата SOAP). Я уверен, что в Интернете есть пример, который преобразует time () (или что-то еще) в поле SOAP :: dateTime.

все, что вам нужно для подключения, есть там .. может быть, вам стоит сначала прочитать на веб-сервисах?

0 голосов
/ 22 апреля 2009

Вы не ошиблись, ИМО. Для получения необходимой информации должны быть другие вызовы SOAP. Вы смотрели на Типы тарифов ? А как насчет списка методов здесь ?

0 голосов
/ 22 апреля 2009

Обычно это ассоциативный массив, где ключами являются поля, которые вы найдете в описании, т.е. PropertyCode, DateFrom, DateTo и т. Д. Для CwiRateDetails

так было бы что-то вроде

$client->CwiRateDetails(array("PropertyCode"=>"sdsd","DateFrom"=>"",......))

Вы можете увидеть подробности всех методов на этой странице: https://cwi.rezexchange.com:9991/ Просто нажмите на название процедуры, и вы увидите ее параметры и ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...