soapclient返回无法加载外部实体

时间:2011-11-22 13:16:40

标签: php soap wsdl nusoap

我尝试使用PHP使用简单的Web服务但遗憾的是我得到以下错误消息(因为在我看来)说SOAP URL无法打开,但在浏览器中它确实可以正常工作(http:// www.webservicex.net/uklocation.asmx?WSDL)。

任何想法我的错误在哪里?

错误消息:

  

警告:   SoapClient的:: SoapClient的(http://www.webservicex.net/uklocation.asmx?WSDL)   [soapclient.soapclient]:无法打开流:连接超时   在/home/sia-deutschland_de/www/tests/test.php第14行

     

警告:SoapClient :: SoapClient()[soapclient.soapclient]:I / O警告   :无法加载外部实体   “http://www.webservicex.net/uklocation.asmx?WSDL”中   第14行的/home/sia-deutschland_de/www/tests/test.php异常   错误!

     

SOAP-ERROR:解析WSDL:无法加载   'http://www.webservicex.net/uklocation.asmx?WSDL':无法加载   外部实体“http://www.webservicex.net/uklocation.asmx?WSDL”

我的代码:

<?php
// include the SOAP classes
require_once('nusoap.php');

try { 
            $options = array( 
                'soap_version'=>SOAP_1_2, 
                'exceptions'=>true, 
                'trace'=>1, 
                'cache_wsdl'=>WSDL_CACHE_NONE 
            ); 
            $client = new SoapClient("http://www.webservicex.net/uklocation.asmx?WSDL", $options); 
    // Note where 'Get' and 'request' tags are in the XML 


//$client = new soapclient("http://www.webservicex.net/uklocation.asmx?WSDL", $options);

$err = $client->getError();
if ($err) {
// Display the error
echo 'client construction error: ' . $err ;
} else {
$answer = $client->call(’GetUKLocationByCounty’,
array(
'Country'=>'London'));

$err = $client->getError();
if ($err) {
// Display the error
echo 'Call error: ' . $err;
print_r($client->response);
print_r($client->getDebug());
} else {
print_r($answer);
}
}



} catch (Exception $e) { 
    echo "<h2>Exception Error!</h2>"; 
    echo $e->getMessage(); 
}
?>

2 个答案:

答案 0 :(得分:5)

解决方案非常简单并非如此:我在共享主机软件包上安装了代码,而且似乎不允许上网。从我的本地系统,它工作正常。

答案 1 :(得分:0)

另外,就像我的情况一样,问题可以在url上,我的变量开头有一个空格,其中包含url并导致错误。