2010-08-08 49 views
0

我尝试连接到一个WSDL服务, 但得到这个错误:插座 - 超时

WSDL错误:获取http://api.didww.com/api/?wsdl - HTTP错误:套接字读取头的超时

本地没有问题,但在远程服务器上,我得到这个错误。

远程服务器:采用Linux CentOS的(FreePBX的)

代码:

$client = new soapclient($site, true); 
$err = $client->getError(); 
if ($err) 
{ 
    echo 'ERROR: ' . $err . '</pre>'; 
} 

$username = 'XXXX'; 
$_key = 'YYYY'; 
$auth_string = sha1($username.$_key); 

$arr = array(); 
$arr[0] = $auth_string; 
$arr[1] = $country_id; 

$result = $client->call('getcities', $arr); 

if ($client->fault) 
{ 
    echo '<pre>'; 
    print_r($result); 
    echo '</pre>'; 
} 
else 
{ 
    $err = $client->getError(); 
    if ($err) 
    { 
     echo 'Error: <pre>' . $err . '</pre>'; 
    } 
} 
echo '<pre>'; 
print_r($result); 
echo '</pre>'; 
+0

你确定它没有与防火墙相关吗?你有没有尝试以另一种方式连接到目标服务器? – Blizz 2010-08-08 08:29:53

+0

我关闭了防火墙,仍然是同样的问题。 – WEBProject 2010-08-08 08:30:57

+0

什么是您的“default_socket_timeout”超时设置? – 2010-08-08 08:40:50

回答

2

默认套接字超时设置在INI所以你可以增加它,看看它是否工作,然后

ini_set('default_socket_timeout', 160); 

或者您可以将它作为构造函数参数(选项)传递给soapclient

$client = new SoapClient($wsdl, array("connection_timeout"=>15)); 
+0

它的工作,但问题是它需要年龄加载,1:30平均, 和本地服务器,和其他服务器,几毫秒。可能是什么问题呢? – WEBProject 2010-08-08 19:40:55