我遇到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
这是什么原因?
答案 0 :(得分:0)
要修复此错误,我们可以增加default_socket_time
中的套接字超时php.ini
,或者在传递给SoapClient构造函数的参数数组中添加connection_timeout
参数。
这些参数位于秒。
在php.ini
中 default_socket_timeout = 120
或者,您可以从代码
进行更改 ini_set('default_socket_timeout', 120);
注意:php中的默认套接字超时为60秒。
connection_timeout
参数 $client = new SoapClient($wsdl, array('connection_timeout' => 120));
答案 1 :(得分:0)
对我有用的配置是在我的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秒,并立即引发错误“Error Fetching http headers”。
我希望它可以帮到你。