簡體   English   中英

未捕獲的SoapFault異常:[HTTP]錯誤獲取http標頭

[英]Uncaught SoapFault exception: [HTTP] Error Fetching http headers

我正在嘗試創建與Magento的Web服務的soap連接,但是當我嘗試創建soap客戶端類的實例時,我遇到了錯誤。 我可以毫無問題地在firefox中查看wsdl文件,我可以看到php在apaches日志中發出wsdl的請求,但它仍然失敗。 Nusoap可以連接。

$proxy = new SoapClient('someaddress?wsdl');

錯誤是

<b>Fatal error</b>:  Uncaught SoapFault exception: [HTTP] Error Fetching http headers in /home/sites/xxx/xxx_main/system/application/views/contentpage_templates/gift_service.php:29
Stack trace:
[internal function]: SoapClient-&gt;__doRequest('&lt;?xml version=&quot;...',    'http://cornishw...', 'urn:Mage_Api_Mo...', 1, 0)
[internal function]: SoapClient-&gt;__call('call', Array)
/home/sites/xxx/xxx_main/system/application/views/contentpage_templates/gift_service.php(29): SoapClient-&gt;call(NULL, 'catalog_categor...', 5, 'giftshop')
/home/sites/xxx/xxx_main/system/application/libraries/MY_Loader.php(586): include('/home/sites/cor...')
/home/sites/xxx/xxx_main/system/application/libraries/MY_Loader.php(228): MY_Loader-&gt;_ci_load(Array, '')
/home/sites/xxx/xxx_main/system/application/modules/contentpage/controllers/contentpage.php(44): MY_Loader-&gt;view('contentpage_tem...', false, true)
[internal function]: Contentpage-&gt;index()
/home/sites/xxx in <b>/home/sites/xxx/xxx_main/system/application/views/contentpage_templates/gift_service.php</b> on line <b>29</b>

謝謝

嘗試設置:

default_socket_timeout = 120

在你的php.ini文件中。

你嘗試過添加嗎?

'trace'=>1,

到SoapClient創建參數然后:

var_dump($client->__getLastRequest());
var_dump($client->__getLastResponse());

看看發生了什么?

如果服務器端出現問題,則此錯誤可能會出現在客戶端上。 例如,如果SOAP服務器是具有解析錯誤的PHP腳本,則客戶端將失敗並顯示此消息。

如果您控制服務器,請在托管SOAP服務器的計算機上拖動Apache error_log。 在CentOS上你可以在/ var / log / httpd / error_log中找到它,所以命令是:

tail -f / var / log / httpd / error_log

現在刷新客戶端並觀察錯誤消息。 將顯示服務器腳本的任何PHP錯誤。

希望能幫助別人。

我遇到了同樣的問題。
我以CLI身份運行它。 所以PHP總是在運行,它必須在一段時間后一次又一次地進行肥皂調用。
我做的錯誤是使用單例模式。 我認為使用singleton會導致性能提升,但我得到了

Error Fetching http headers in ...

我通過為每個調用創建新的saop對象來修復它。

我不是關於你的PHP配置,但是在PHP 5.2.6之前,PHP確實遇到了SOAP客戶端的一些問題:

Bug#41983 - 獲取http標頭時出錯

蟲子#41983

如果這是與Magento相關的問題,則應關閉自動重新索引,因為這可能導致套接字超時(或過期)。 腳本完成任務后,您可以將其重新打開。 增加php.ini中的默認套接字超時也是一個好主意。

我遇到了同樣的問題並嘗試了上述所有解決方案。 可悲的是沒有用。

  1. 套接字超時(未使用)
  2. 用戶代理(未使用)
  3. SoapClient配置, cache_wsdlKeep-Alive等。

我們傳遞的整個標題游戲。 我通過添加壓縮標頭屬性解決了我的問題。 當您期望以gzip壓縮格式進行響應時,這實際上需要。

//set the Headers of Soap Client. 
$client = new SoapClient($wsdlUrl, array(
    'trace' => true, 
    'keep_alive' => true,
    'connection_timeout' => 5000,
    'cache_wsdl' => WSDL_CACHE_NONE,
    'compression'   => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP | SOAP_COMPRESSION_DEFLATE,
));

希望能幫助到你。

祝好運。

請用你的php.ini更新

default_socket_timeout = 120

如果php安裝了CGI而不是Apache模塊,您可以創建自己的php.ini

在我的apache錯誤日志中,我看到:

[Tue Feb 16 14:55:02 2010] [notice] child pid 9985 exit signal File size limit exceeded (25)

所以我刪除了我最大的日志文件2.1GB /var/log/system.log的所有內容。 現在一切正常。

php版本中存在小於5.2.6的問題。 您可能需要升級php的版本。

暫無
暫無

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

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