我正在使用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;
}
答案 0 :(得分:0)
您的代码示例无法使用,因为您尝试拨打课程\Comkom\SoapParkingDeck\Service\SOAPServer
而不是\SoapServer
和\Comkom\SoapParkingDeck\Service\SOAPFault
而不是\SoapFault
。
在命名空间环境中,您应该声明\
(反斜杠)来调用php-类(另请参阅How to use “root” namespace of php?)。
<强>调试强>
开发时,您应启用debug output
,deprecation logs
并设置logging to info level
。这可以在Configuration presets
=&gt;下的安装工具中轻松完成。 Development / Production settings
=&gt; Development
。
如果您处理罕见的行为,例如白屏,500内部服务器错误等,请同时检查您的apache errorlog
。