Я являюсь новым в 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);
?>
Что я должен сделать для следующих шагов так, чтобы я мог получить отвечание??
Сначала вы должны создать экземпляр класса 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
.