Я новичок в 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
класс 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 элемент, который будет иметь « Celsius
» в качестве ключа, и значение для преобразования в качестве значения.
Это означает, что вам придется использовать эту часть кода 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
.