繁体   English   中英

NuSOAP PHP Web服务

[英]NuSOAP PHP Web Service

我正在使用NuSOAP尝试使用Java构建的Web服务。 到目前为止我有这个代码:

<?php
require_once('lib/nusoap.php'); 
$wsdl="http://localhost:8080/HelloWorldWS/sayHiService?WSDL";
$client=new nusoap_client($wsdl, 'wsdl');
$param='John';#array('name'=>'John'); 
echo $client->call('Hey', $param);
unset($client);
?>

但是当网页加载时,我得到一个空白页面甚至没有代码,我真的不知道为什么。 难道我做错了什么?

虽然NuSOAP是一个非常常见的PHP SOAP库,但我认为它主要用于PHP4应用程序。 因为PHP5有一个更快的内置SOAP扩展(因为它是一个编译的扩展)。 我还建议使用Zend Framework SOAP库。 但我记得我想使用一些Web服务(不是由我编写,用Java实现),而且这些SOAP客户端都不起作用,但是NuSOAP。 而我真的无法弄清楚为什么。

无论如何,这是我当时使用该Web服务所做的事情:

$soapClient = new nusoap_client($wsdlFile, 'wsdl', '', '', '', '');
$soapClient->soap_defencoding = 'UTF-8';
$soapClient->debug_flag = false;
$soapError = $soapClient->getError();
if (! empty($soapError)) {
    $errorMessage = 'Nusoap object creation failed: ' . $soapError;
    throw new Exception($errorMessage);
}
// calling verifyT method, using 2 parameters.
$tResult = $soapClient->call( 'verifyT', array($param1, $param2) );
$soapError = $soapClient->getError();
if (! empty($soapError)) {
    $errorMessage = 'SOAP method invocation (verifyT) failed: ' . $soapError;
    throw new Exception($errorMessage);
}
if ($soapClient->fault) {
    $fault = "{$soapClient->faultcode}: {$soapClient->faultdetail} ";
    // handle fault situation
}

不要使用NuSoap。 从版本5开始,PHP有一个本机soap客户端

在PHP5上继续使用NuSOAP有一些很好的理由:

  • 获取页面时,NuSOAP会生成方法列表
  • NuSOAP“动态”生成WSDL,这是PHP 5中本机实现SOAP无法提供的非常有用的功能

不要使用NuSoap。 从版本5开始,PHP有一个本机soap客户端 ,除了速度更快之外,它更加稳定。

..当网页加载时,我得到一个空白页面没有...

这可能是一个致命的错误。 尝试检查错误日志以查看出错的地方。 或者设置display_errors = on

是的,你做错了什么。 很难知道什么是基于空白页面,但我从这一行开始,它看起来不像有效的PHP:

$ PARAM = '约翰';#阵列( '姓名'=> '约翰');

“#”没有在PHP中发表评论; “//”的确如此

如果修复仍会导致空白页面,请打开错误报告和/或添加更多输出,以查看确切发生的情况。

我刚遇到同样的问题。

使用include_once而不是require_once解决了空白页问题。 当然,这不是完美的解决方案,因为: require,include和require_once之间的区别?

请在浏览器中验证服务器生成的HTML。 在我的例子中,结果包含XML标记,因此浏览器无法正确显示信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM