2015-10-15 3 views
0

Я использую TYPO3 6.2, и я хочу реализовать SOAP-сервер в моем существующем расширении extbase. Позже я хочу иметь возможность передавать данные через запрос SOAP, который затем сохраняется в базе данных.
Ключ Extensinon моего плагина soap_parking_deck, а продавец - Comkom. В моем расширения У меня есть класс Классы/Услуги/SOAPService.php:SOAP-сервер в расширении TYPO3 6.2

namespace Comkom\SoapParkingDeck\Service; 

class SOAPService { 
    public function __construct() { 
    try { 
     $server = new SOAPServer (
     NULL, 
     array (
      'uri' => 'http://localhost/test/SOAPService', 
      'encoding' => 'UTF-8', 
      'soap_version' => SOAP_1_2 
     ) 
    ); 
     $server->addFunction('helloWorld'); 
     $server->handle(); 
    } 
    catch (SOAPFault $fault) { 
     print $fault->faultstring; 
    } 
    } 

    public function helloWorld() { 
    return 'Hello World'; 
    } 
} 

В классе я определяю PHP SoapServer и функция HelloWorld(). Но когда я пытаюсь сделать запрос, я получаю ошибку 404.

С намеком на Arek van Schaijk я выяснил решение.
Ошибка 404 возникла из-за того, что uri фактически должен быть полным путем к файлу сервера.

namespace Comkom\SoapParkingDeck\Service; 

class SOAPService { 
    public function helloWorld() { 
    return 'Hello World'; 
    } 
} 

try { 
    $server = new \SOAPServer (
    NULL, 
    array (
     'uri' => 'http://localhost/test/typo3conf/ext/soap_parking_deck/Classes/Service/SOAPService', 
     'encoding' => 'UTF-8', 
     'soap_version' => SOAP_1_1 
    ) 
); 
    $server->setClass('Comkom\SoapParkingDeck\Service\SOAPService'); 
    $server->handle(); 
} 
catch (\SOAPFault $fault) { 
    print $fault->faultstring; 
} 

ответ

0

Ваш пример кода не может работать, так как вы пытаетесь вызвать класс \Comkom\SoapParkingDeck\Service\SOAPServer вместо \SoapServer и \Comkom\SoapParkingDeck\Service\SOAPFault вместо \SoapFault.

В среде с именами вы должны объявить \ (обратная косая черта) для вызова php-классов (см. Также How to use “root” namespace of php?).

Debugging

Хотя развитие следует включить debug output, deprecation logs и установить logging to info level. Это можно легко сделать в установочном инструменте под Configuration presets =>Development/Production settings =>Development.

Пожалуйста, проверьте также всегда ваш apache errorlog, если вы имеете дело с редким поведением, как белый экран, 500 внутренних ошибок сервера и т.д.

+0

Спасибо сформировать подсказки. Теперь я прослушиваю apache errorlog. Как только у меня будет рабочий результат, я отправлю его. – diealtebremse