获取http标头SOAP时出错

时间:2014-10-02 08:09:13

标签: php soap soap-client soapfault

我遇到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

这是什么原因?

2 个答案:

答案 0 :(得分:0)

要修复此错误,我们可以增加default_socket_time中的套接字超时php.ini,或者在传递给SoapClient构造函数的参数数组中添加connection_timeout参数。

这些参数位于

  1. 在php.ini

    default_socket_timeout = 120

  2. 或者,您可以从代码

    进行更改

    ini_set('default_socket_timeout', 120);

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

      SoapClient构造函数中的
    1. connection_timeout参数
    2. $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”。

我希望它可以帮到你。