[英](Zend) Soap Server doesn't return results
我一直在尝试使用Zend_Soap_Server设置Soap Server,但似乎无法使其正常工作。
我尝试了几种不同的环境:Linux vm上的nginx和apache,Windows上的apache,php 5.3和php 5.4,它们都产生相同的结果。
使用Zend_Soap_Autodiscover可以正确生成wsdl。 当我将wsdl喂给SoapClient并在其上调用方法时,它不会返回响应。 在SoapServer :: handle()被调用之后,php似乎停止了。
这是服务器部分:
ini_set('soap.enable_wsdl_cache', 0);
require_once 'Zend/Soap/AutoDiscover.php';
require_once 'Zend/Soap/Server.php';
if (isset($_GET['wsdl'])) {
handleWsdl();
} else {
handleSoap();
}
function handleWsdl() {
$autodiscover = new Zend_Soap_AutoDiscover();
$autodiscover->addFunction('pi');
$autodiscover->handle();
}
function handleSoap() {
$soap = new Zend_Soap_Server('http://localhost/experiments/soap/server.php?wsdl');
$soap->setWsdlCache(false);
$soap->addFunction('pi');
$soap->handle();
}
这是客户:
ini_set('soap.enable_wsdl_cache', 0);
$wsdl = 'http://localhost/experiments/soap/server.php?wsdl';
$client = new SoapClient($wsdl, array('trace' => 1));
$result = $client->pi();
var_dump($result);
$result
为NULL
。
我的想法不多了,希望有人能帮助我解决这个难题。
顺便说一句:我也尝试了SoapUI来使用Web服务,但是结果是相同的。
也许我发现了问题。 请检查并报告您的投票是否正确。 我已经更改了使用选项而不是主要uri参数调用Soap的方式,方法是:
try{
// initialize SOAP client
$options = array(
'location' => 'http://localhost/experiments/soap/server.php',
'uri' => 'http://localhost/experiments/soap/server.php'
);
$client = new Zend_Soap_Client(null, $options);
$result = $client->pi();
Zend_Debug::dump($result);
}catch(SoapFault $e){
Zend_Debug::dump($e);
echo $e->getMessage();
}
}
如果您调用WSDL,客户端将无法调用“ pi()”方法。 试试看,让我知道。
问候
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.