获取HTTP头时出错 SOAP。

3

我在SOAP方面遇到了问题,一直没有找到真正的答案。

try {
    $objResponse = $objSoapClient->$strMethod($objMethod->getSoapRequest());
}
catch (SoapFault $e) {  
    GlobalLogState::write("exception with code(".$e->getCode()."): \n".$e->getMessage());
}

这是我的简单SOAP请求,使用try catch块包裹。
我收到了一个SoapFault异常:
Error Fetching http headers

什么原因导致这种情况发生?
2个回答

2

对于我来说行之有效的配置是在我的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”错误。
希望这能帮到你。

0
要解决这个错误,我们可以增加socket超时时间default_socket_timephp.ini中,或者在传递给SoapClient构造函数的参数数组中添加connection_timeout参数。
这些参数以为单位。
  1. 在php.ini中

    default_socket_timeout = 120

另外,您也可以通过代码进行更改

ini_set('default_socket_timeout', 120);

注意:php中默认的socket超时时间是60秒。

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

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


错误发生在大约5秒钟后 - 我真的怀疑它与超时有关。而且几周前,旧的 Web 服务设置中没有这个问题。无论我在我的 C# SOAP 服务设置中做了什么改变,都产生了影响,但是到底是什么呢? 我将响应类型从强类型更改为 XMLDocument。我甚至尝试返回字符串。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接