![](/img/trans.png)
[英]Fatal error: Uncaught SoapFault exception: [HTTP] Error Fetching http headers
[英]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->__doRequest('<?xml version="...', 'http://cornishw...', 'urn:Mage_Api_Mo...', 1, 0)
[internal function]: SoapClient->__call('call', Array)
/home/sites/xxx/xxx_main/system/application/views/contentpage_templates/gift_service.php(29): SoapClient->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->_ci_load(Array, '')
/home/sites/xxx/xxx_main/system/application/modules/contentpage/controllers/contentpage.php(44): MY_Loader->view('contentpage_tem...', false, true)
[internal function]: Contentpage->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對象來修復它。
如果這是與Magento相關的問題,則應關閉自動重新索引,因為這可能導致套接字超時(或過期)。 腳本完成任務后,您可以將其重新打開。 增加php.ini中的默認套接字超時也是一個好主意。
我遇到了同樣的問題並嘗試了上述所有解決方案。 可悲的是沒有用。
我們傳遞的整個標題游戲。 我通過添加壓縮標頭屬性解決了我的問題。 當您期望以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.