2010-08-08 46 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