我们正在运行PHP 5.3.18,由于一些奇怪的原因我无法安装php-soap以便我无法使用SoapClient类......
我现在使用最后一个nusoap(应与php 5.3.18兼容)并将代码从SoapClient翻译成nusoap_client。
此代码使用SoapClient并且工作正常
$s_WSPROTOCOL = 'https';
$s_WSHOSTNAME = 'xxxxxxxx.yyyyyy.tdl';
$s_WSPORT = '';
$s_WSPATHNAME = 'webservices/service.asp?WSDL';
$s_WSTIPOOP = 'MyFunction';
$parameters['Username'] = '999';
$parameters['Login'] = 'Master';
$parameters['Password'] = 'universe';
$parameters['IdServ'] = '5';
$parameters['IdCard'] = '555';
$parameters['Controllo'] = '';
echo $s_WSTIPOOP."<br />";
echo $s_WSPROTOCOL."://".$s_WSHOSTNAME.$s_WSPORT."/".$s_WSPATHNAME."<br /><br /><br />";
try
{
$SOAP = new SoapClient($s_WSPROTOCOL."://".$s_WSHOSTNAME.$s_WSPORT."/".$s_WSPATHNAME, array('trace' => 1));
$result = $SOAP->__soapCall($s_WSTIPOOP, array("parameters" => $parameters), null);
foreach ($result as $key => $value)
{
echo "<b>".$key."</b><br />";
print_r($value);
echo "<br />";
}
}
catch (SoapFault $e)
{
echo "<b>".$e->faultstring."</b>";
}
nusoap中的此代码返回
[faultcode] => soap:Client
[faultstring] => Server did not recognize the value of HTTP Header SOAPAction: .
[detail] =>
这里是代码
require("nusoap/lib/nusoap.php");
error_reporting(E_ALL ^ E_NOTICE);
$ERROR_MSG = '';
$s_WSPROTOCOL = 'https';
$s_WSHOSTNAME = 'xxxxxxxx.yyyyyy.tdl';
$s_WSPORT = '';
$s_WSPATHNAME = 'webservices/service.asp?WSDL';
$s_WSTIPOOP = 'MyFunction';
$parameters['Username'] = '999';
$parameters['Login'] = 'Master';
$parameters['Password'] = 'universe';
$parameters['IdServ'] = '5';
$parameters['IdCard'] = '555';
$parameters['Controllo'] = '';
echo $s_WSTIPOOP."<br />";
echo $s_WSPROTOCOL."://".$s_WSHOSTNAME.$s_WSPORT."/".$s_WSPATHNAME."<br /><br /><br />";
$client = new nusoap_client($s_WSPROTOCOL."://".$s_WSHOSTNAME.$s_WSPORT."/".$s_WSPATHNAME);
$result = $client->call($s_WSTIPOOP, $parameters, '');
if ($client->fault) {
echo '<h2>Fault (Expect - The request contains an invalid SOAP body)</h2><pre>'; print_r($result); echo '</pre>';
} else {
$err = $client->getError();
if ($err) {
echo '<h2>Error</h2><pre>' . $err . '</pre>';
} else {
echo '<h2>Result</h2><pre>'; print_r($result); echo '</pre>';
}
}
哪里出错?我正在阅读nusoap源代码,尝试使用不同的参数而没有成功
答案 0 :(得分:5)
我必须将$ wsdl参数设置为true才能工作
$client = new nusoap_client($s_WSPROTOCOL."://".$s_WSHOSTNAME.$s_WSPORT."/".$s_WSPATHNAME, true);
答案 1 :(得分:0)
错误就在这里
$result = $client->call($s_WSTIPOOP, $parameters, '');
$ client 即将来临?
我认为您忘记为 nusoap_client 类创建对象
$client = new nusoap_client();
编辑后
在您的第一个示例
中发送参数时发送参数 $result = $client->call($s_WSTIPOOP, array("parameters" => $parameters), '');
答案 2 :(得分:0)
这有帮助。 错误的命名空间。 如果您要升级旧的Web服务,则所有者可能保留旧的Web服务,不要更新它。