#php #soap #wsdl
#php #soap #wsdl
Вопрос:
я пытаюсь разработать веб-сервис из заданного файла wsdl.
я написал серверный и клиентский код. Пожалуйста, кто-нибудь может мне помочь сказать, на правильном ли я пути?
От клиента я не понимаю, получаю ли я правильный ответ.
Спасибо, вот код сервера
<?php
ini_set("soap.wsdl_cache_enabled","0");
class getTryPing
{
public $arg0;
}
$server=new SoapServer("WSDL/TryPingService.xml");
$server->addFunction('getTryPing');
$server->handle();
function getTryPing()
{
$esito=new getTryPing();
$esito ->esito= 1;
return $esito;
}
?>
клиент
<?php
ini_set('soap.wsdl_cache_enabled',0);
ini_set('soap.wsdl_cache_ttl',0);
$client = new SoapClient(
dirname(__FILE__) . '/WSDL/TryPingService.xml');
//$response = $client->getTryPing(1);
$response = $client->getTryPing();
var_dump($response);
?>
и это wsdl
<definitions name='TryPingService' targetNamespace='http://tryPing.integrazione.laitspa.it/' xmlns='http://schemas.xmlsoap.org/wsdl/' xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:tns='http://tryPing.integrazione.laitspa.it/' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
<types>
<xs:schema targetNamespace='http://tryPing.integrazione.laitspa.it/' version='1.0' xmlns:tns='http://tryPing.integrazione.laitspa.it/' xmlns:xs='http://www.w3.org/2001/XMLSchema'>
<xs:element name='getTryPing' type='tns:getTryPing'/>
<xs:element name='getTryPingResponse' type='tns:getTryPingResponse'/>
<xs:complexType name='getTryPing'>
<xs:sequence>
<xs:element minOccurs='0' name='arg0' type='tns:tryPingRequest'/>
</xs:sequence>
</xs:complexType>
<xs:complexType name='tryPingRequest'>
<xs:sequence/>
</xs:complexType>
<xs:complexType name='getTryPingResponse'>
<xs:sequence>
<xs:element minOccurs='0' name='return' type='tns:tryPingResponse'/>
</xs:sequence>
</xs:complexType>
<xs:complexType name='tryPingResponse'>
<xs:sequence>
<xs:element name='esito' type='xs:boolean'/>
</xs:sequence>
</xs:complexType>
</xs:schema>
</types>
<message name='TryPingService_getTryPing'>
<part element='tns:getTryPing' name='getTryPing'></part>
</message>
<message name='TryPingService_getTryPingResponse'>
<part element='tns:getTryPingResponse' name='getTryPingResponse'></part>
</message>
<portType name='TryPingService'>
<operation name='getTryPing' parameterOrder='getTryPing'>
<input message='tns:TryPingService_getTryPing'></input>
<output message='tns:TryPingService_getTryPingResponse'></output>
</operation>
</portType>
<binding name='TryPingServiceBinding' type='tns:TryPingService'>
<soap:binding style='document' transport='http://schemas.xmlsoap.org/soap/http'/>
<operation name='getTryPing'>
<soap:operation soapAction=''/>
<input>
<soap:body use='literal'/>
</input>
<output>
<soap:body use='literal'/>
</output>
</operation>
</binding>
<service name='TryPingService'>
<port binding='tns:TryPingServiceBinding' name='TryPingServicePort'>
<soap:address location='http://127.0.0.1/ReCup/server.php'/>
</port>
</service>
</definitions>
полученный мной ответ — object (stdClass) # 2 (0) { }
Комментарии:
1. Во-первых, можете ли вы изменить свой getTryPing, например, вернуть статическую строку и проверить, здесь ответ или нет, на этом этапе, чтобы узнать, проблема в вашей логической функции или что-то в соответствии с конфигурацией вызова soap
2. в вашем wsdl измените возвращаемый тип вашего метода
3. что за ошибку вы получили?
4. что это за сообщение об ошибке?
5. [26 марта 2019 13:54:43 Европа / Белград] Ошибка синтаксического анализа PHP: синтаксическая ошибка, неожиданный ‘»привет»‘ (T_CONSTANT_ENCAPSED_STRING) в D:DATAWWWROOTReCupserver.php в строке 17 [26 марта 2019 13:54:43 Европа / Белград] Неустранимая ошибка PHP: неперехваченное исключение SoapFault: [HTTP] Внутренняя ошибка сервера в D:DATAWWWROOTReCupclient.php:7 Трассировка стека: #0 [внутренняя функция]: SoapClient->__doRequest(‘<?xml version=»…’, ‘ 127.0.0 ….’, «, 1, 0) #1 D:DATAWWWROOTReCupclient.php (7): SoapClient->__call(‘getTryPing’, массив) #2 {main}, добавленный в D:DATAWWWROOTReCupclient.php в строке 7