我在http://www.genivia.com/Products/gsoap/demos/index.html
创建了gSOAP计算器服务示例我的Web服务在我的Solaris盒子上作为deamon运行。
现在我正在尝试使用php页面来点击这个新的Web服务。我一直在看http://www.php.net/manual/en/class.soapclient.php,并试图举一个例子,但没有运气。有人可以指点我这样做的一个例子吗?或者告诉我这样做的代码?
我花了两天时间查看网站并尝试不同的事情,但我的项目时间不多了。非常感谢你的帮助。
fyi:我将我的apache服务器设置为端口7000。
<?php
function customError($errno, $errstr)
{
echo "<b>Error: </b> [$errno] $errstr";
}
set_error_handler("customError");
define("SOAP_ENCODED", 1);
define("SOAP_RPC", 1);
$options = array(
'compression'=>true,
'exceptions'=>false,
'trace'=>true,
'use' => SOAP_ENCODED,
'style'=> SOAP_RPC,
'location'=> "http://localhost:7000",
'uri' => "urn:calc"
);
echo "1";
$client = @new SoapClient(null, $options);
echo "2";
$args = array(2, 3);
$ret = $client->__soapCall("add", $args);
echo "3";
if (is_soap_fault($ret))
{
echo 'fault : ';
var_dump($client->__getLastRequest());
var_dump($client->__getLastRequestHeaders());
}
else
{
echo 'success : ';
print '__'.$ret.'__';
}
$client->ns__allAllowed();
?>
网页不会返回任何错误。
迈克尔
答案 0 :(得分:1)
在脚本的顶部:
error_reporting(E_ALL);
ini_set('display_errors', true);
ini_set('display_startup_errors', true);
要检查的一些事项:
?>
之后没有空格(您应该删除它)php /path/myscript.php
答案 1 :(得分:0)
在您提到的教程中,写了Calc Web服务生成WSDL。 WSDL是一个描述Web服务的所有方法和类型的文件。牢记这一点,您可以在PHP中创建SOAP客户端:
$client = new SoapClient('http://www.mysite.com/calc.wsdl',
array('trace' => true, 'exceptions' => true));
然后您可以调用Web服务提供的任何方法:
try {
$client = new SoapClient('http://www.mysite.com/calc.wsdl',
array('trace' => true, 'exceptions' => true));
$result = $client->methodName($param1, $param2);
} catch (SoapFault $e) {
var_dump($e);
}
var_dump($result);
如果发生某些错误,您将在try / catch块中捕获它。