2013-09-06 2 views
1

Довольно просто. Из-за требований моего проекта, я должен создать сервер NuSOAP в определении класса. Я не могу заставить его работать. Я получаю сообщение об ошибке с этим сообщением об ошибке: «ошибка в разборке msg: xml был пуст, не разбирался!» Что мне нужно для выполнения этой работы?Определение сервера NuSOAP в определении класса

Это код, который является общим для обоих подходов:

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"); 
} 

Добавление этого кода на глобальном уровне производит функционирование веб-службы:

$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); 

Обмотка этот код в определение класса, как ниже выдает веб-сервис, который вернет 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; 

ответ

0

Решение проблемы: Поместите "global $ HTTP_RAW_POST_DATA;" в __construct(). Я новичок в PHP и полностью игнорирую эту деталь.

2

исправить, что изменение этого:

$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")); 
+0

в отношении образца кода. $ server-> service (file_get_contents ("php: // input")); –

 Смежные вопросы

  • Нет связанных вопросов^_^