TYPO3 6.2 扩展中的 SOAP 服务器
SOAP Server in TYPO3 6.2 extension
我正在使用 TYPO3 6.2,我想在我现有的 extbase 扩展中实现一个 SOAP 服务器。稍后我希望能够通过 SOAP 请求推送数据,然后将其保存到数据库中。
我的插件的扩展密钥是 soap_parking_deck 并且供应商是 Comkom。在我的扩展中,我有一个 class 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';
}
}
在 class 中,我定义了一个 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;
}
您的代码示例无法运行,因为您尝试调用 class \Comkom\SoapParkingDeck\Service\SOAPServer
而不是 \SoapServer
和 \Comkom\SoapParkingDeck\Service\SOAPFault
而不是 \SoapFault
.
在命名空间环境中,您应该声明 \
(反斜杠)以调用 php- classes(另请参阅 How to use “root” namespace of php?)。
调试
在开发过程中,您应该启用 debug output
、deprecation logs
并设置 logging to info level
。这可以在 Configuration presets
=> Development / Production settings
=> Development
.
下的安装工具中轻松完成
如果您处理白屏、500 个内部服务器错误等罕见行为,请始终检查您的 apache errorlog
我正在使用 TYPO3 6.2,我想在我现有的 extbase 扩展中实现一个 SOAP 服务器。稍后我希望能够通过 SOAP 请求推送数据,然后将其保存到数据库中。
我的插件的扩展密钥是 soap_parking_deck 并且供应商是 Comkom。在我的扩展中,我有一个 class 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';
}
}
在 class 中,我定义了一个 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;
}
您的代码示例无法运行,因为您尝试调用 class \Comkom\SoapParkingDeck\Service\SOAPServer
而不是 \SoapServer
和 \Comkom\SoapParkingDeck\Service\SOAPFault
而不是 \SoapFault
.
在命名空间环境中,您应该声明 \
(反斜杠)以调用 php- classes(另请参阅 How to use “root” namespace of php?)。
调试
在开发过程中,您应该启用 debug output
、deprecation logs
并设置 logging to info level
。这可以在 Configuration presets
=> Development / Production settings
=> Development
.
如果您处理白屏、500 个内部服务器错误等罕见行为,请始终检查您的 apache errorlog