通过php调用web服务 - >错误:尚未找到传输或选定的传输

时间:2013-01-07 11:17:39

标签: php web-services soap nusoap

错误:未找到传输,或者尚未支持所选传输!

当我呼叫网络服务时,会发生此错误。

这是我的代码:

include("lib/bankmellat/nusoap.php");
$client = new \bankmellat\nusoap_client('https://pgwstest.bpm.bankmellat.ir/pgwchannel/services/pgw?wsdl');
$namespace = 'http://interfaces.core.sw.bps.com/';
$parameters = array();
$parameters['terminalId'] = $terminalId;
$parameters['userName'] = $userName;
.
.
.
$result = $client->call('bpPayRequest', $parameters , $namespace);
echo '<h2>Error!!</h2><pre>' . $client->getError(); . '</pre>';

ubuntu 12.04

apache2的

PHP 5.3.10

cURL在php上启用 - 版本:7.21.3

cURL支持的协议:dict,file,ftp,ftps,gopher,http,https,imap,imaps,ldap,ldaps,pop3,pop3s,rtsp,smtp,smtps,telnet,tftp < / p>

我必须说我在具有几乎相似资格的其他服务器上实现了此代码,并且它们仍在工作!

请帮助解决这个问题。日Thnx。

2 个答案:

答案 0 :(得分:4)

最后我发现了我的问题! 主要问题是 php版本(5.3.10)!

根据php manual on constructors

从PHP 5.3.3开始,与命名空间类名的最后一个元素同名的方法将不再被视为构造函数。此更改不会影响非命名空间的类。

所以我将nusoap_client类中的 nusoap_client (旧构造函数样式)函数更改为 __ construct 并修复了问题!

现在我又遇到了另一个错误并正在努力解决它:

wsdl错误:获取https://pgws.bpm.blabla.ir/pgwchannel/services/pgw?wsdl - HTTP错误:未知方案

答案 1 :(得分:1)

当使用命名空间时,旧的php OOP(php4)构造不运行auto。 将__construct方法添加到所有类。 在新的__construct方法中调用old构造之后。

或使用此编辑文件&gt; nusoap_client.php