2

石鹸を介してオブジェクトの機能を公開するために次のことを行っていますが、エラーとして表示されます

サーバー:

$soap_wrapper = new my_geo_soap_wrapper();
$soap_wrapper->set_geo_app($my_geo);
$server = new SoapServer(null, array('uri' => "urn://localhost/firstmobile"));
$server->setObject($soap_wrapper);
$server->handle();

クライアント:

$client = new SoapClient(null, array(
    'location' => "http://127.0.0.1/firstmobile/simple_server.php",
    'uri'      => "http://127.0.0.1/firstmobile/"
    ));

$result = $client->__soapCall("geolocate",array($lat,$lng));
print $result;

エラー:

致命的なエラー: キャッチされない SoapFault 例外: [SOAP-ENV:Server] /home/imran/projects/firstmobile/simple_client.php:15 の非オブジェクトに対するメンバー関数 geolocate() の呼び出し: 15 スタック トレース: #0 /home/ imran/projects/firstmobile/simple_client.php(15): SoapClient->__soapCall('geolocate', Array) #1 {main} が 15 行目の /home/imran/projects/firstmobile/simple_client.php でスローされます

4

1 に答える 1

2

my_geo_soap_wrapperエラーはクラスのどこかにあると思います。コードを読んでエラーが正しく表示された場合、SOAP 呼び出し ( ) はSOAP サーバー側に$client->__soapCall("geolocate",array($lat,$lng));マッピングされています。$soap_wrapper->geolocate($lat,$lng)

純粋にクラスの名前に基づいて、この「my_geo_soap_wrapper」クラスが、 というメソッドを持つ他のオブジェクトに委任されているのでgeolocateはないかと思います。これがバグの場所ですか? 例えば

class my_geo_soap_wrapper
{
     function geolocate($lat,$lng)
     {
         // Will blow up if $this->delegated_object hasn't been set correctly
         return $this->delegated_object->geolocate($lat,$lng);
     }
}

純粋な憶測ですが、調査するルートを示唆している可能性があります。

于 2012-08-24T16:03:12.387 に答える