获取http标头SOAP时出错


Error Fetching http headers SOAP

我对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参数。

这些参数以秒为单位

  1. 在php.ini 中

    default_socket_timeout = 120

或者,您可以从代码更改

ini_set('default_socket_timeout', 120);

注意:php中默认的套接字超时为60秒。

  1. SoapClient构造函数中的connection_timeout参数

$client = new SoapClient($wsdl, array('connection_timeout' => 120));