【发布时间】:2014-04-21 04:43:22
【问题描述】:
我正在尝试连接到 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>';
【问题讨论】:
-
你确定它不是防火墙相关的吗?您是否尝试过以其他方式连接到目标服务器?
-
我关闭了防火墙,还是一样的问题。
-
“default_socket_timeout”的超时设置是多少?
-
你能否从该服务器上的任何 http 源获取数据,例如
<?php $c = file_get_contents('http://stackoverflow.com');? -
检查 php.ini 或使用 $setting = ini_get('default_socket_timeout');您也可以尝试使用soapclient参数设置conn timeout和resp timeout