簡體   English   中英

獲取 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));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM