我对SOAP有问题,还没有找到真正的答案。
try {
$objResponse = $objSoapClient->$strMethod($objMethod->getSoapRequest());
}
catch (SoapFault $e) {
GlobalLogState::write("exception with code(".$e->getCode()."): 'n".$e->getMessage());
}
这是我在try-catch块中的简单SOAP请求。
我收到SoapFault异常:
Error Fetching http headers
这是什么原因?
对我有效的配置是在我的php脚本中定义以下参数:
ini_set('default_socket_timeout', 5000);
$client = new 'SoapClient($url,array(
'trace' =>true,
'connection_timeout' => 5000,
'cache_wsdl' => WSDL_CACHE_NONE,
'keep_alive' => false,
));
请评论。
根据我处理这个问题的经验,最重要的参数定义是ini_set('default_socket_timeout',5000);
在测试过程中,我将default_socket_timeout定义为5秒,并立即引发错误"获取http标头时出错"。
我希望它能帮助你。
要修复此错误,我们可以增加php.ini
中的套接字超时default_socket_time
,或者在传递给SoapClient构造函数的参数数组中添加connection_timeout
参数。
这些参数以秒为单位。
-
在php.ini 中
default_socket_timeout = 120
或者,您可以从代码更改
ini_set('default_socket_timeout', 120);
注意:php中默认的套接字超时为60秒。
- SoapClient构造函数中的
connection_timeout
参数
$client = new SoapClient($wsdl, array('connection_timeout' => 120));