0

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:26 に XML ドキュメントがないようです スタック トレース: #0 C:\wamp\www\api.php(26): SoapClient ->__call('ws_getUser', Array) #1 {main} が C:\wamp\www\api.php の 26 行目にスローされる

PHP 5.4.3 と Nusoap ライブラリ 0.9.5 で wamp を使用しています。

4

1 に答える 1

1

私は wamp を使用してそれを理解し、SOAP 拡張機能を有効にしました。クライアントまたはサーバーを登録するたびに、nusoap の代わりにデフォルトの SOAP のクラスが見つかりました。

正しい $client = new nusoap_client('http://localhost/nusoap/server.php?wsdl'); 間違った $client = new soapclient('http://localhost/nusoap/server.php?wsdl');

サーバーと同じ。

私が受け取ったphpエラーは、これが原因であり、正しい方法でフォーマットされていません. 通常の SOAP ext はそれを stdClass として返します。

于 2012-08-23T11:28:17.840 に答える