2015-10-15 142 views
0

我正在使用TYPO3 6.2,並且我想在現有的extbase擴展中實現SOAP服務器。稍後,我希望能夠通過SOAP請求推送數據,然後將其保存到數據庫中。
我的插件的extensinon鍵是soap_parking_deck和供應商是Comkom。在我的分機我有一個類類/服務/ SOAPService.phpTYPO3 6.2擴展中的SOAP服務器

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實際上必須是服務器文件的完整路徑。因爲你試圖調用的類\Comkom\SoapParkingDeck\Service\SOAPServer代替\SoapServer\Comkom\SoapParkingDeck\Service\SOAPFault代替\SoapFault

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

你的代碼示例無法正常工作。

在名稱空間環境中,您應該聲明調用php-類的\(反斜槓)(另請參閱How to use 「root」 namespace of php?)。

調試

雖然發展應啓用debug outputdeprecation logs並設置logging to info level。這可以通過安裝工具在Configuration presets =>Development/Production settings =>Development下輕鬆完成。

請檢查也永遠是你apache errorlog如果你處理像白色屏幕罕見的行爲,500內部服務器錯誤等

+0

謝謝形成的提示。我正在用apache errorlog進行竊聽。只要我有一個工作結果,我會發布它。 – diealtebremse