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() 堆栈跟踪:#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 调用 ( $client->__soapCall("geolocate",array($lat,$lng));) 将映射到$soap_wrapper->geolocate($lat,$lng)SOAP 服务器端。

纯粹基于类的名称,我想知道这个“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 回答