Ошибка в работе SOAP

200
30 мая 2018, 01:00

Решил разобраться с основами работы SOAP. Написал код указанный ниже. При обращении к клиенту идет возврат следующей ошибки:

Fatal error: Uncaught SoapFault exception: [Client] Function ("getStock") is not a valid method for this service in E:\servNew\OSPanel\domains\test-soap\index.php on line 8

Полагаю, что людей работающих с SOAP данный вопрос не должен затруднить. Я полагаю, что ошибка находится в самом wsdl файле, и я был бы рад если бы кто-то подсказал мне как ее устранить. Заранее благодарен)

Сервер:

function getStock($id) {
    $stock = [
        '1' => 100,
        '2' => 200,
        '3' => 300,
        '4' => 400,
    ];
    $quantity = $stock[$id];
    return $quantity;
}
ini_set('soap.wsdl_cache_enabled', '0');
$server = new SoapServer( 'test.wsdl' );
$server->addFunction('getStock');
$server->handle();
?>

Клиент:

<?php 
$client = new 
    SoapClient( 
        "test.wsdl" 
    ); 
$client->getStock('1'); 
?>

wsdl файл:

<?xml version ='1.0' encoding ='UTF-8' ?> 
<definitions name='Stock' 
 targetNamespace='http://example.org/StockQuote' 
 xmlns:tns=' http://example.org/StockQuote ' 
 xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' 
 xmlns:xsd='http://www.w3.org/2001/XMLSchema' 
 xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/' 
 xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/' 
 xmlns='http://schemas.xmlsoap.org/wsdl/'> 
<message name='getStockRequest'>
  <part name='id' type='xsd:string'/>
</message>
<message name='getStockResponse'>
  <part name='Result' type='xsd:integer'/>
</message>
<portType name='StockPortType'>
  <operation name='getStock'>
    <input message='tns:getStockRequest'/>
    <output message='tns:getStockResponse'/>
  <operation>
<portType>
<binding name='StockBinding' type='tns:StockPortType'>
  <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/>
  <operation name='getStock' />
<binding>
<service name='StockService'>
  <port name='StockPort' binding='StockBinding'>
    <soap:address location='test.wsdl'/>
  <port>
</service>
</definitions> 
READ ALSO
Как отправить во Vue.js get запрос в контроллер laravel

Как отправить во Vue.js get запрос в контроллер laravel

Подскажите, как отправить get-запрос vuejs в контроллер laravel, то есть чтобы записать данные в методе get (Route::get)

177
Передать информацию о файле на другую страницу при клике

Передать информацию о файле на другую страницу при клике

Есть страница PHP с сеткой изображений которые хранятся в папке, а выводятся изображения на сайт при помощи MySQL запроса в базу данных, где хранятся...

174
Загрузка изображений с сайта в облако Yandex Disk php

Загрузка изображений с сайта в облако Yandex Disk php

Нужна загрузка с сайта на Yandex DiskНачал делать на чистом PHP и Curl, но столкнулся с проблемой, что не для всех фотографий создаются превью на стороне...

182