2

我在一个项目上工作,该项目使用由 PHP 和 2 个本机智能手机应用程序(ios 和 android)查询的基于 Soap 的 Web 服务,在 Web 服务开发团队进行了一些编辑之后,PHP 方面的事情被打破了,但智能手机应用程序没有问题。

这是一个重现问题的简单脚本

<?php
error_reporting(E_ALL);
$url          = 'http://www.xxxxx.com/service.awws?wsdl'; 

$sKey    = 'thekey';

$client= new SoapClient($url, array('trace' => 1,
                                   'exception' => 1,
                                   'encoding'      => 'UTF-8',
                                   'cache_wsdl' => WSDL_CACHE_NONE));


$params = array('sKey' => $sKey, 'nLangID' => 1);

$res      = $client->TPGetLocalisationVersion($params);

echo '<pre>Res : ';
print_r($res);
echo '</pre>';

?>

我收到以下错误:

Fatal error: Uncaught SoapFault exception: 
[HTTP] Unable to parse URL in /home/xxxx/www/test.php:14 Stack trace: #0 [internal function]: 
SoapClient->__doRequest('__call('TPGetLocalisati...', Array) #2 /home/tmpweb/www/test.php(14): 
SoapClient->TPGetLocalisationVersion(Array) #3 {main} thrown in /home/xxxx/www/test.php on line 14 

TPGetLocalisationVersion 方法存在且参数正确。这段代码几天前曾经工作过。

我还可以使用 wget 从 PHP Web 服务器获取 wsdl。

我用一些在线工具测试了 WSDL 文件,看起来还可以。

有什么建议可以调试吗?我确定 WSDL 没有被缓存,因为我在专用服务器上并且在 php.ini 中完全禁用了 WSDL 缓存

4

1 回答 1

5

问题已解决,问题出在 WSDL 内的 soap:adress 中(错误值)

于 2013-03-07T14:42:50.180 回答