Php 在类定义中定义NuSOAP服务器

Php 在类定义中定义NuSOAP服务器,php,nusoap,Php,Nusoap,很简单。由于项目的需要,我必须在类定义中创建一个NuSOAP服务器。我不能让它工作。我收到了一条错误消息:“msg解析中的错误:xml为空,未解析!”我需要做什么才能使其正常工作 这是两种方法的共同代码: require_once('/xxx/nusoap/nusoap.php'); function SomeMethod( $someParameter ) { return "Success: $someParameter!"; } function registerSom

很简单。由于项目的需要,我必须在类定义中创建一个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“消息解析中的错误:xml为空,未解析!”


解决方案:将“全局$HTTP\u原始\u POST\u数据;”放入构造()中。我是PHP新手,完全忽略了这个细节

我修复了此更改:

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
为此:

$this->nusoap_server->service(file_get_contents("php://input"));

关于示例代码$服务器->服务(文件获取内容)php://input"));
$this->nusoap_server->service(file_get_contents("php://input"));