错误获取http头SOAP
问题描述:
我有一个SOAP问题,没有找到真正的答案。错误获取http头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
是什么原因呢?
答
要修正这个错误,我们可以增加或者增加套接字超时default_socket_time
在php.ini
或传递给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));
答
已经为我被限定在我的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'立即引发。
我希望它能帮助你。