TYPO3 6.2扩展中的SOAP服务器

时间:2015-10-15 10:43:45

标签: php soap extbase typo3-6.2.x

我正在使用TYPO3 6.2,我想在现有的extbase扩展中实现SOAP服务器。后来我希望能够通过SOAP请求推送数据,然后将其保存到数据库中 我的插件的extensinon键是 soap_parking_deck ,供应商是Comkom。在我的扩展中,我有一个类 Classes / Service / SOAPService.php

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';
  }
}

在类I中定义PHP SOAPServer和函数helloWorld()。但是当我尝试提出请求时,我收到404错误。

有了Arek van Schaijk的暗示,我想出了一个解决方案 发生了404错误,因为uri实际上必须是Server文件的完整路径。

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;
}

1 个答案:

答案 0 :(得分:0)

您的代码示例无法使用,因为您尝试拨打课程\Comkom\SoapParkingDeck\Service\SOAPServer而不是\SoapServer\Comkom\SoapParkingDeck\Service\SOAPFault而不是\SoapFault

在命名空间环境中,您应该声明\(反斜杠)来调用php-类(另请参阅How to use “root” namespace of php?)。

<强>调试

开发时,您应启用debug outputdeprecation logs并设置logging to info level。这可以在Configuration presets =&gt;下的安装工具中轻松完成。 Development / Production settings =&gt; Development

如果您处理罕见的行为,例如白屏,500内部服务器错误等,请同时检查您的apache errorlog