Как сделать SoapClient на php

Я являюсь новым в soapclient, я попытался сделать некоторое исследование онлайн и также попытался кодировать на мыле, но кажусь, что это все еще не работает мне, просто блуждая кто-либо здесь может указать и возможно дать мне некоторый пример, как я могу на самом деле использовать soapclint для получения обратной связи от следующего веб-сервера?

POST /webservices/tempconvert.asmx HTTP/1.1
Host: www.w3schools.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/CelsiusToFahrenheit"

<?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>
    <CelsiusToFahrenheit xmlns="http://tempuri.org/">
      <Celsius>string</Celsius>
    </CelsiusToFahrenheit>
  </soap:Body>
</soap:Envelope>

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?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>
    <CelsiusToFahrenheitResponse xmlns="http://tempuri.org/">
      <CelsiusToFahrenheitResult>string</CelsiusToFahrenheitResult>
    </CelsiusToFahrenheitResponse>
  </soap:Body>
</soap:Envelope>



<?php
$url = "http://www.w3schools.com/webservices/tempconvert.asmx?WSDL";
$client = new SoapClient($url);


?>

Что я должен сделать для следующих шагов так, чтобы я мог получить отвечание??

5
задан Jin Yong 8 April 2010 в 05:13
поделиться

1 ответ

Сначала вы должны создать экземпляр класса SoapClient , как вы это делали:

$url = "http://www.w3schools.com/webservices/tempconvert.asmx?WSDL";
$client = new SoapClient($url);


Затем у вас есть для вызвать метод, который вы хотите использовать - имена методов можно найти в WSDL.

Например, мы могли вызвать метод под названием CelsiusToFahrenheit в этом WebService:

$result = $client->CelsiusToFahrenheit( /* PARAMETERS HERE */ );


Теперь проблема состоит в том, чтобы узнать , какие параметры следует передать ; и как ...

Если вы посмотрите на WSDL, вы увидите эту часть:

<s:element name="CelsiusToFahrenheit">
  <s:complexType>
    <s:sequence>
      <s:element minOccurs="0" maxOccurs="1" name="Celsius" type="s:string" />
    </s:sequence>
  </s:complexType>
</s:element>

Это означает, что этим методам следует передать массив, содержащий 1 элемент, который будет иметь " Цельсия "как ключ, а значение, которое нужно преобразовать, как значение.

Это означает, что вам придется использовать эту часть кода PHP:

$result = $client->CelsiusToFahrenheit(array('Celsius' => '10'));


Выполнение этого вызова и сброс результата:

var_dump($result);

Получает такой вывод:

object(stdClass)#2 (1) {
  ["CelsiusToFahrenheitResult"]=>
  string(2) "50"
}


Это означает, что вы должны использовать это:

echo $result->CelsiusToFahrenheitResult . "\n";

Чтобы получить результирующее значение :

50


Примечание: структуру этого результата, конечно же, можно найти в файле WSDL - см. Раздел CelsiusToFahrenheitResponse .

12
ответ дан 13 December 2019 в 05:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: