繁体   English   中英

TYPO3 6.2扩展中的SOAP服务器

[英]SOAP Server in TYPO3 6.2 extension

我正在使用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';
  }
}

在该类中,我定义了一个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;
}

您的代码示例无法工作,因为你试图调用类\\Comkom\\SoapParkingDeck\\Service\\SOAPServer ,而不是\\SoapServer\\Comkom\\SoapParkingDeck\\Service\\SOAPFault而不是\\SoapFault

在命名空间环境中,应声明\\ (反斜杠)以调用php-类(另请参见如何使用php的“ root”命名空间? )。

调试

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

如果您遇到罕见的行为,例如白屏,500个内部服务器错误等,也请始终检查您的apache errorlog

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM