很简单。由于我的项目的要求,我必须在类定义中创建一个 NuSOAP 服务器。我无法让它工作。我收到一条错误消息:“msg 解析错误:xml 为空,未解析!” 我需要什么才能完成这项工作?
这是两种方法共有的代码:
require_once('/xxx/nusoap/nusoap.php');
function SomeMethod(
$someParameter
) {
return "Success: $someParameter!";
}
function registerSomeMethod() {
$in = array();
$in['someParameter'] = 'xsd:string';
$out = array();
$out['return'] = 'xsd:string';
$this->_server->register("SomeMethod",$in,$out,$this->_namespace,"SomeMethod","rpc","encoded");
}
在全局级别添加此代码会生成一个正常运行的 Web 服务:
$namespace = 'uri:mycompany';
$server = new soap_server;
$server->configureWSDL('mycompany',$namespace);
registerSomeMethod();
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
将该代码包装在如下的类定义中会生成一个 Web 服务,该服务将直接向浏览器返回 WSDL,但会使用 SoapFault 响应客户端调用“msg 解析中的错误:xml 为空,未解析!”
class MyService {
public function __construct() {
$namespace = 'uri:mycompany';
$server = new soap_server;
$server->configureWSDL('mycompany',$namespace);
registerSomeMethod();
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
}
} // class
$o = new MyService;