2014-10-02 90 views
1

我有一個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 

是什麼原因呢?

回答

0

要修正這個錯誤,我們可以增加或者增加套接字超時default_socket_timephp.ini或傳遞給SoapClient的的構造函數的參數數組中添加connection_timeout參數。

這些參數在

  1. 在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));

    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'立即引發。

    我希望它能幫助你。