NuSOAP PHP Web服务

NuSOAP PHP Web服务,php,web-services,Php,Web Services,我正在使用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->ca

我正在使用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);
?>


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

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

$param='John'#数组('name'=>'John')

“#”不会在PHP中开始注释;“//”可以


如果修复后仍然出现空白页,请打开错误报告和/或添加更多输出,以查看到底发生了什么。

不要使用NuSoap。PHP从版本5开始就有了一个更稳定的版本,而且速度更快

。。当网页被加载时,我会得到一个空白页面


这可能是一个致命的错误。试着检查错误日志,看看哪里出了问题。或者set

尽管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。PHP已经有了一个本地版本 自版本5以来的soap客户端

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

  • NuSOAP生成一个方法列表 当你进入页面时
  • NuSOAP“动态”生成WSDL 一个真正有用的功能,但不是 由的本机实现提供 PHP5中的SOAP

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

我正面临同样的问题


使用<代码>包含< < /代码>而不是<代码>要求,曾经< /代码>解决了空白页问题。当然,这不是一个完美的解决方案,因为:

“#”在PHP中也以一行注释开头。只是不经常用,我不同意。内置的PHP SoapClient存在问题和未解决的bug。就像这个>>一样,它会阻止它工作。需要注意的重要一点是,您应该在生产环境中禁用debug_标志。我是通过艰苦的学习才学会的。