клиент сервера веб-сервисов php с заданным wsdl

#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