我有一个带有NuSOAP的PHP Web服务我有一个复杂的类型,然后与堆栈上的另一个帖子相同,见下文:
#SERVER
$server->wsdl->addComplexType('User',
'complexType','struct', 'all', '',
array( 'id' => array('name' => 'id', 'type' => 'xsd:int'),
'username' => array('name' => 'username','type' => 'xsd:string'),
'password' => array('name' => 'password','type' => 'xsd:string'),
'email' => array('name' => 'email','type' => 'xsd:string'),
'authority' => array('name' => 'authority','type' => 'xsd:int'),
'isActive' => array('name' => 'isActive','type' => 'xsd:int'),
'area' => array('name' => 'area','type' => 'xsd:string')
)
);
$server->register('ws_getUser',
array('user_id' => 'xsd:integer'),
array('user' => 'tns:User'),
$namespace,
"$namespace#ws_getUser",
'rpc',
'encoded',
'Retorna un usuario'
);
function ws_getUser($user_id){
return new soapval('return', 'tns:User', getUser($user_id));
}
#CLIENT
require_once('./classes/nusoaplib/nusoap.php');
$client = new soapclient('http://localhost/api.php?wsdl');
$result = $client->__call('ws_getUser', array('id' => '1', 'username' => 'user', 'password' => 'pass', 'email' => 'user@email.co.za', 'authority' => '1', 'isActive' => '1', 'area' => 'usa'));
// Display the result
var_dump($result);
但是我不断从服务中得到错误我已经尝试了很多不同类型的复杂类型的更改但是仍然遇到相同的错误。
致命错误:未捕获的SoapFault异常:[客户端]看起来我们在C:\ wamp \ www \ api.php中没有XML文档:26堆栈跟踪:#0 C:\ wamp \ www \ api.php(26) ):第26行的C:\ wamp \ www \ api.php中抛出的SoapClient-> __ call('ws_getUser',Array)#1 {main}
我正在使用PHP 5.4.3和Nusoap库0.9.5的wamp 如果有人能告诉我这是什么问题 感谢
答案 0 :(得分:1)
我想通过wamp i启用了soap扩展,每次我注册客户端或服务器时都会找到默认肥皂而不是nusoap的类
CORRECT $ client = new nusoap_client('http://localhost/nusoap/server.php?wsdl'); 不正确 $ client = new soapclient('http://localhost/nusoap/server.php?wsdl');
与服务器相同。
我收到的php错误是因为它以及它没有以正确的方式格式化。普通soap ext将其作为stdClass返回。