Exception soap fault with message error fetching http headers

Исключение SoapFault: [HTTP] Ошибка при получении заголовков http. Я получаю следующее исключение на моей странице php. Исключение SoapFault: [HTTP] Ошибка при получении заголовков http. Я прочитал пару статей и обнаружил, что default_socket_timeout требует настройки. поэтому я установил это следующим образом. default_socket_timeout = 480 Я все еще получаю ту же ошибку. Кто-нибудь может мне помочь? […]

Содержание

  1. Исключение SoapFault: [HTTP] Ошибка при получении заголовков http.
  2. 3 ответы
  3. Исключить исключение SoapFault: Ошибка Получение заголовков HTTP
  4. Error fetching http headers перевод
  5. Решение
  6. Другие решения
  7. Страницы
  8. вторник, 6 августа 2013 г.
  9. 1С:Предприятие 8. Веб-сервисы. Ошибки веб-сервисов и их причины
  10. 12 комментариев :
  11. 14 Answers 14
  12. Uncaught soapfault исключение: [HTTP] ошибка выборки HTTP-заголовков
  13. 10 ответов

Исключение SoapFault: [HTTP] Ошибка при получении заголовков http.

Я получаю следующее исключение на моей странице php.

Исключение SoapFault: [HTTP] Ошибка при получении заголовков http.

Я прочитал пару статей и обнаружил, что default_socket_timeout требует настройки. поэтому я установил это следующим образом. default_socket_timeout = 480

Я все еще получаю ту же ошибку. Кто-нибудь может мне помочь?

Syed Tayyab Ali

3 ответы

Я получаю Error fetching http headers по двум причинам:

  1. Сервер долго отвечает.
  2. Сервер не поддерживает Keep-Alive связи (которые охватываются моим ответом).

PHP всегда будет пытаться использовать постоянное соединение с веб-службой, отправляя Connection: Keep-Alive Заголовок HTTP. Если сервер всегда закрывает соединение и не сделал этого (PHP не получил EOF ), ты можешь получить Error fetching http headers когда PHP пытается повторно использовать соединение, которое уже закрыто на стороне сервера.

Примечание: этот сценарий произойдет только в том случае, если такой же SoapClient объект отправляет более одного запроса и с большой частотой. Отправка Connection: close Заголовок HTTP вместе с первым запросом исправил бы это.

В версии PHP 5.3.5 (в настоящее время поставляется с Ubuntu) установка заголовка HTTP Connection: Close не поддерживается SoapClient. Следует иметь возможность отправлять заголовок HTTP в контексте потока (используя $option — ключ stream_context в качестве аргумента SoapClient ), но SoapClient не поддерживает изменение заголовка подключения (Обновление: Эта ошибка была решить в версии PHP 5.3.11).

Другое решение — реализовать свой собственный __doRequest() . По предоставленной ссылке парень использует Curl отправить запрос. Это сделает ваше приложение PHP зависимым от Curl . В реализации также отсутствуют такие функции, как сохранение заголовков запроса / ответа.

Третье решение — просто закрыть соединение сразу после получения ответа. Это можно сделать, установив атрибут SoapClients. httpsocket в NULL in __doRequest() , __call() or __soapCall() . Пример с __call() :

ответ дан 23 окт ’14, 08:10

Начиная с PHP 5.4 этот флаг теперь доступен: параметр keep_alive — это логическое значение, определяющее, следует ли отправлять заголовок Connection: Keep-Alive или Connection: close. (php.net/manual/en/soapclient.soapclient.php) — Heuri

Жалко, что во избежание этого требуется отключить поддержку активности; Возможно, я неправильно понимаю, но разве ответ сервера не должен указывать, как долго соединение может поддерживаться, а затем SoapClient должен просто знать, что не следует повторно использовать его после истечения времени ожидания (и, в идеале, повторно подключаться прозрачно)? — Эль Йобо

«Сервер не поддерживает соединения Keep-Alive (о чем идет речь в моем ответе).». У меня был глючный сервер, с которым я разговаривал. Он неправильно обрабатывал соединения Keep-Alive, и мне пришлось его отключить. — HNygard

У меня была такая же проблема, и я попробовал сделать следующее, отключив keep_alive .

Однако у меня это не сработало. У меня сработало отключение кеша SOAP. Похоже, что кешируются неправильные запросы, и после отключения я заметил, что мои запросы выполняются быстрее.

На сервере Linux вы можете найти это в своем /etc/php.ini .

Искать soap.wsdl_cache_enabled=1 и изменить его на soap.wsdl_cache_enabled=0 .

Не забудьте перезагрузить apache. service httpd reload

Источник

Исключить исключение SoapFault: Ошибка Получение заголовков HTTP

Я пытаюсь создать соединение с мылом с веб-службами Magento, однако я получаю сообщение об ошибке при попытке создать экземпляр класса клиента soap. Я могу просматривать wsdl-файл в firefox без проблем, и я могу посмотреть, как php делает запрос для wsdl в журналах apaches, но он все еще не работает. Nusoap может подключаться.

Вы пытались добавить

к параметрам создания SoapClient, а затем:

посмотреть, что происходит?

Эта ошибка может появиться на клиенте, если на сервере возникла проблема. Например, если SOAP-сервер является скриптом PHP с ошибкой синтаксического анализа, клиент будет терпеть неудачу с этим сообщением.

Если вы контролируете сервер, запустите свой Apache error_log на компьютере, на котором размещен SOAP-сервер. В CentOS вы найдете это в / var / log / httpd / error_log, поэтому команда:

tail -f / var / log / httpd / error_log

Теперь обновите клиент и посмотрите сообщение об ошибке. Будут показаны любые ошибки PHP с помощью сценария сервера.

Надежда помогает кому-то.

Я столкнулся с такой же проблемой.
Я запускал его как CLI. Поэтому PHP всегда работал, и ему приходилось делать мыльный вызов снова и снова через некоторый интервал.
Ошибка, которую я сделал, это использовать одноэлементный шаблон для этого. Я думал, что использование синглтона приведет к повышению производительности, но я хочу, чтобы

Я исправил его, создав новый объект saop для каждого вызова.

Я не о вашей конфигурации PHP, но до PHP 5.2.6 у PHP есть некоторые проблемы с клиентом SOAP:

Ошибка # 41983 – Ошибка получения заголовков http

Если это проблема, связанная с Magento, вы должны отключить автоматическую повторную индексацию, поскольку это может привести к таймауту сокета (или истечению срока его действия). Вы можете вернуть его обратно, как только скрипт завершит выполнение своих задач. Увеличение времени ожидания по умолчанию в php.ini также является хорошей идеей.

В моем журнале ошибок apache я увидел:

Поэтому я удалил все содержимое самого большого файла журнала 2.1GB /var/log/system.log. Теперь все работает.

Существует проблема в версии php менее 5.2.6. Возможно, вам потребуется обновить версию php.

Источник

У меня проблема с SOAP, но я не нашел реального ответа.

Это мой простой SOAP-запрос в блоке try catch.

Я получаю исключение SoapFault:

В чем причина этого?

Решение

Чтобы исправить эту ошибку, мы можем увеличить либо увеличить время ожидания сокета default_socket_time в php.ini или добавить connection_timeout параметр в массиве параметров передается конструктору SoapClient.

Эти параметры находятся в секунд.

Кроме того, вы можете изменить код

Примечание. Время ожидания сокета по умолчанию в php составляет 60 секунд.

  1. connection_timeout параметр в конструкторе SoapClient

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

Другие решения

Конфигурация, которая работала для меня, определяла в моем php-скрипте следующие параметры:

Самое важное определение параметра, согласно моему опыту с этой проблемой, было ini_set (‘default_socket_timeout’, 5000);

Во время моих тестов я установил default_socket_timeout равным 5 секундам, и ошибка «Ошибка получения заголовков http» возникла мгновенно.

Цель блога описать интересные и полезные примеры программирования в системе 1С:Предприятие 8.

Страницы

вторник, 6 августа 2013 г.

1С:Предприятие 8. Веб-сервисы. Ошибки веб-сервисов и их причины

Хочу рассказать об ошибках, с которыми столкнулся при разработке веб-сервисов на 1С. Статью буду дополнять по мере получения опыта.

1
Это сообщение об ошибке при подключении к веб сервису из PHP.
[31-Mar-2013 05:32:02 UTC] PHP Fatal error: SOAP-ERROR: Parsing WSDL: Couldn’t load from ‘http://test.ru/test/ws/WebServices?wsdl’ : failed to load external entity

Данное сообщение говорит лишь о недоступности веб-сервера, на котором опубликована база. В этом случае попробуйте вручную вызвать http://test.ru/test/ws/WebServices?wsdl и убедиться, что WSDL формируется. Если не формируется, значит либо веб-сервер выключен, либо база опубликована по другому адресу или порту, либо блокирует фаервол. Могут быть и другие причины.

2
02-Apr-2013 13:46:10 UTC] PHP Fatal error: Uncaught SoapFault exception: [HTTP] Error Fetching http headers in /home/users/b/test/domains/ test .ru/ testDIR / test .php:169

Эта ошибка возникает если WSDL возвращается с ошибкой. Есть несколько причин для этой ошибки:

  1. Несогласованность пространств имен в конфигурации. Например в ws-операции тип возвращаемого значения не соответствует типу из XDTO. Это может возникнуть при сменен URI пространства имен пакета XDTO.
  2. Возникает если в PHP включить кеш WSDL. Кеш запоминает WSDL и при каждом вызове веб-операции не запрашивает его, но если вы поменяли веб-сервис, то произойдет ошибка. Вообще, при разработке кеш стоит отключить, а если уже все работает то для скорости лучше включить. Ускорение при отключенном кеше заметное. Для примера скажу, что создание объекта SoapClient с выключенным кешем занимает примерно 2 сек, а с включенным — за сотые доли секунды. Отключить можно так:
    ini_set ( «soap.wsdl_cache_enabled» , 0);
    или
    $client = new SoapClient( ‘http://somewhere.com/?wsdl’ , array ( ‘cache_wsdl’ => 0));

12 комментариев :

Не могу разобраться со следующей ошибкой. Разные soap клиенты возвращают ошибку типа «Unable to parse URL» при вызове любого метода после чтения wsdl. Т.е. wsdl читают, а следующий запрос отправить не могут. На причину этой ошибки меня наталкивает отсутствие полного url в wsdl: . 1C 8.2.16.362, apache 2.2.18, 2.2.25. Т.е. обновление апача с 18 до 25 релиза не помогло. В httpd.conf прописан ServerName tst.icc.biz:80. Куда рыть дальше? Пробовать другой релиз 1С?

Я бы проверил пространства имен пакетов XDTO, которые описывают типы возвращаемые в результатах операций.

I’m trying to invoke a WS over https on a remote host:remote port and I get:

using the PHP5 SoapClient; I can get the list of functions by doing $client->__getFunctions() but when I call $client->myFunction(. ) I always get this error.

I’ve googled and found that increasing default_socket_timeout in php.ini should fix it, but it did not work.

Can anyone suggest me a solution?

EDIT: here is the code:

always ends in the error.

How do I solve the problem?

14 Answers 14

This error is often seen when the default_socket_timeout value is exceeded for the SOAP response. (See this link.)

Note from the SoapClient constructor: the connection_timeout option is used for defining a timeout value for connecting to the service, not for the timeout for its response.

You can increase it like so:

This should tell you if the timeout is the issue, or whether you have a different problem. Bear in mind that you should not use this as a permanent solution, but rather to see if it gets rid of the error before moving on to investigate why the SOAP service is responding so slowly. If the service is consistently this slow, you may have to consider offline/batch processing.

Just wanted to share the solution to this problem in my specific situation (I had identical symptoms). In my scenario it turned out to be that the ssl certificate provided by the web service was no longer trusted. It actually turned out to be due to a new firewall that the client had installed which was interfering with the SOAP request, but the end result was that the certificate was not being correctly served/trusted.

It was a bit difficult to track down because the SoapClient call (even with trace=1) doesn’t give very helpful feedback.

I was able to prove the untrusted certificate by using:

I know this won’t be the answer to everyone’s problem, but hopefully it helps someone. Either way I think it’s important to realise that the cause of this error (faultcode: «HTTP» faultstring: «Error Fetching http headers») is usually going to be a network/socket/protocol/communication issue rather than simply «not allowing enough time for the request». I can’t imagine expanding the default_socket_timeout value is going to resolve this problem very often, and even if it does, surely it would be better to resolve the issue of WHY it is so slow in the first place.

Источник

Uncaught soapfault исключение: [HTTP] ошибка выборки HTTP-заголовков

Я пытаюсь создать soap-соединение с веб-службами Magento, однако я получаю ошибку при попытке создать экземпляр класса SOAP client. Я могу просматривать файл wsdl в firefox без проблем, и я могу смотреть, как php делает запрос на WSDL в журналах apaches, но он все равно терпит неудачу. Nusoap можно подключить.

10 ответов

вы пытались добавить

для параметров создания SoapClient, а затем:

чтобы увидеть, что происходит?

эта ошибка может отображаться на клиенте, если есть проблема на стороне сервера. Например, если SOAP-сервер является PHP-скриптом с ошибкой синтаксического анализа, клиент завершит работу с этим сообщением.

Если вы контролируете сервер, хвост вашего Apache error_log на машине, на которой размещен сервер SOAP. На CentOS вы найдете это в /var/log/httpd / error_log, поэтому команда:

хвост -Ф /ВАР/лог/файл httpd/функцию error_log

теперь обновите клиент и посмотрите для сообщения об ошибке. Будут показаны любые ошибки PHP со скриптом сервера.

надеюсь, что это кому-то поможет.

я столкнулся с той же проблемой.
Я управлял им как CLI. Таким образом, PHP всегда работал, и ему приходилось делать soap-вызов снова и снова после некоторого интервала.
Ошибка, которую я сделал, заключалась в использовании для этого шаблона singleton. Я думал, что использование singleton вызовет повышение производительности, но inturn я получил

я исправил это, создав новый объект saop для каждого вызова.

Я не о вашей конфигурации PHP, но до PHP 5.2.6 у PHP есть некоторые проблемы с SOAP-клиентом:

Если это проблема, связанная с Magento, вы должны отключить автоматическую повторную индексацию, так как это может привести к таймауту сокета (или истечь). Вы можете включить его снова, как только скрипт завершит выполнение своих задач. Увеличение таймаута сокета по умолчанию в PHP.ini также хорошая идея.

в моем журнале ошибок Apache, я увидел:

Итак, я удалил все содержимое моего самого большого файла журнала 2.1 GB/var/log / system.бревно. Теперь все работает.

в php версии меньше 5.2.6 есть проблема. Возможно, Вам потребуется обновить версию php.

пожалуйста, обновите свой php.ini с

вы можете создать свой собственный PHP.ini если php установлен CGI вместо модуля Apache

я столкнулся с той же проблемой и пробовал все вышеперечисленные решения. К сожалению, ничего не работает.

  1. тайм-аут сокета (не работает)
  2. User Agent (Не Работает)
  3. настройки SoapClient, cache_wsdl и Keep-Alive etc..

вся эта игра заголовков, которые мы проходим. Я решил свою проблему с добавлением сжатие свойство header. Это действительно требует, когда вы ожидаете ответа в С помощью gzip сжатый.

Источник

Hi, I posted an issue with the Report Repository on the Google DFP API forums, they redirected me here, I’m having issues getting the Download URL of the report, when I make the request using the getReportDownloadURL method from ReportService I get the following:

PHP Laravel Log:

[2018-06-29 10:45:01] production.INFO: AdopsDfpCoordinator Searching oldest pending report [2018-06-29 10:55:19] production.ERROR: SoapFault exception: [HTTP] Error Fetching http headers in /app/shared/docroots/adops_dfp_coordinator/releases/20180604185549/vendor/googleads/googleads-php-lib/src/Google/AdsApi/Common/AdsSoapClient.php:97 Stack trace: #0 /app/shared/docroots/adops_dfp_coordinator/releases/20180604185549/vendor/googleads/googleads-php-lib/src/Google/AdsApi/Common/AdsSoapClient.php(97): SoapClient->__doRequest('<?xml version="...', 'https://ads.goo...', '', 1, 0) #1 [internal function]: GoogleAdsApiCommonAdsSoapClient->__doRequest('<?xml version="...', 'https://ads.goo...', '', 1, 0) #2 /app/shared/docroots/adops_dfp_coordinator/releases/20180604185549/vendor/googleads/googleads-php-lib/src/Google/AdsApi/Common/AdsSoapClient.php(152): SoapClient->__soapCall('getReportDownlo...', Array, NULL, Array, Array) #3 /app/shared/docroots/adops_dfp_coordinator/releases/20180604185549/vendor/googleads/googleads-php-lib/src/Google/AdsApi/Dfp/v201805/ReportService.php(96): GoogleAdsApiCommonAdsSoapClient->__soapCall('getReportDownlo...', Array) #4 /app/shared/docroots/adops_dfp_coordinator/releases/20180604185549/app/Dfp/Repositories/ReportRepository.php(130): GoogleAdsApiDfpv201805ReportService->getReportDownloadURL(10160417517, 'CSV_DUMP') #5 /app/shared/docroots/adops_dfp_coordinator/releases/20180604185549/app/Dfp/Repositories/ReportRepository.php(107): AdopsDfpRepositoriesReportRepository->downloadReport() #6 /app/shared/docroots/adops_dfp_coordinator/releases/20180604185549/app/Dfp/Repositories/ReportRepository.php(98): AdopsDfpRepositoriesReportRepository->processReport() #7 /app/shared/docroots/adops_dfp_coordinator/releases/20180604185549/app/Console/Commands/ReportScheduler.php(32): AdopsDfpRepositoriesReportRepository->processOldestReport() #8 [internal function]: AdopsConsoleCommandsReportScheduler->handle() #9 /app/shared/docroots/adops_dfp_coordinator/releases/20180604185549/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(29): call_user_func_array(Array, Array) #10 /app/shared/docroots/adops_dfp_coordinator/releases/20180604185549/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(87): IlluminateContainerBoundMethod::IlluminateContainer{closure}() #11 /app/shared/docroots/adops_dfp_coordinator/releases/20180604185549/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(31): IlluminateContainerBoundMethod::callBoundMethod(Object(IlluminateFoundationApplication), Array, Object(Closure)) #12 /app/shared/docroots/adops_dfp_coordinator/releases/20180604185549/vendor/laravel/framework/src/Illuminate/Container/Container.php(539): IlluminateContainerBoundMethod::call(Object(IlluminateFoundationApplication), Array, Array, NULL) #13 /app/shared/docroots/adops_dfp_coordinator/releases/20180604185549/vendor/laravel/framework/src/Illuminate/Console/Command.php(182): IlluminateContainerContainer->call(Array) #14 /app/shared/docroots/adops_dfp_coordinator/releases/20180604185549/vendor/symfony/console/Command/Command.php(251): IlluminateConsoleCommand->execute(Object(SymfonyComponentConsoleInputArgvInput), Object(IlluminateConsoleOutputStyle)) #15 /app/shared/docroots/adops_dfp_coordinator/releases/20180604185549/vendor/laravel/framework/src/Illuminate/Console/Command.php(167): SymfonyComponentConsoleCommandCommand->run(Object(SymfonyComponentConsoleInputArgvInput), Object(IlluminateConsoleOutputStyle)) #16 /app/shared/docroots/adops_dfp_coordinator/releases/20180604185549/vendor/symfony/console/Application.php(946): IlluminateConsoleCommand->run(Object(SymfonyComponentConsoleInputArgvInput), Object(SymfonyComponentConsoleOutputConsoleOutput)) #17 /app/shared/docroots/adops_dfp_coordinator/releases/20180604185549/vendor/symfony/console/Application.php(248): SymfonyComponentConsoleApplication->doRunCommand(Object(AdopsConsoleCommandsReportScheduler), Object(SymfonyComponentConsoleInputArgvInput), Object(SymfonyComponentConsoleOutputConsoleOutput)) #18 /app/shared/docroots/adops_dfp_coordinator/releases/20180604185549/vendor/symfony/console/Application.php(148): SymfonyComponentConsoleApplication->doRun(Object(SymfonyComponentConsoleInputArgvInput), Object(SymfonyComponentConsoleOutputConsoleOutput)) #19 /app/shared/docroots/adops_dfp_coordinator/releases/20180604185549/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(122): SymfonyComponentConsoleApplication->run(Object(SymfonyComponentConsoleInputArgvInput), Object(SymfonyComponentConsoleOutputConsoleOutput)) #20 /app/shared/docroots/adops_dfp_coordinator/releases/20180604185549/artisan(35): IlluminateFoundationConsoleKernel->handle(Object(SymfonyComponentConsoleInputArgvInput), Object(SymfonyComponentConsoleOutputConsoleOutput)) #21 {main}

SOAP Log:

`[2018-06-29 10:45:02] DFP_SOAP.INFO: networkCode=4403 service=InventoryService method=getAdUnitsByStatement responseTime=186 requestId=565d077ac3267f6034c7c4dab6291a6a server=ads.google.com isFault=0 faultMessage=
[2018-06-29 10:45:19] DFP_SOAP.INFO: networkCode=4403 service=ReportService method=getReportJobStatus responseTime=313 requestId=c4cd221079c997b523f2872a24cbeba8 server=ads.google.com isFault=0 faultMessage=
[2018-06-29 10:50:03] DFP_SOAP.INFO: networkCode=4403 service=InventoryService method=getAdUnitsByStatement responseTime=186 requestId=ba2b09efa63a3ca5fea9c3b994617630 server=ads.google.com isFault=0 faultMessage=
[2018-06-29 10:55:02] DFP_SOAP.INFO: networkCode=4403 service=InventoryService method=getAdUnitsByStatement responseTime=196 requestId=97ff4eed55fe6d672635de4fe2086423 server=ads.google.com isFault=0 faultMessage=
[2018-06-29 10:55:19] DFP_SOAP.WARNING: networkCode=4403 service=ReportService method=getReportDownloadURL responseTime= requestId= server=ads.google.com isFault=1 faultMessage=Error Fetching http headers
[2018-06-29 10:55:19] DFP_SOAP.NOTICE: POST /apis/ads/publisher/v201805/ReportService?wsdl HTTP/1.1^M
Host: ads.google.com^M
Connection: close^M
User-Agent: PHP-SOAP/7.1.8^M
Content-Type: text/xml; charset=utf-8^M
SOAPAction: «»^M
Content-Length: 615^M
Authorization: REDACTED

<SOAP-ENV:Envelope xmlns:SOAP-ENV=»http://schemas.xmlsoap.org/soap/envelope/» xmlns:ns1=»https://www.google.com/apis/ads/publisher/v201805″>SOAP-ENV:Headerns1:RequestHeaderns1:networkCode4403</ns1:networkCode>ns1:applicationNameEvolve IQ Platform Brand Campaigns (DfpApi-PHP, googleads-php-lib/35.1.0, PHP/7.1.8)</ns1:applicationName></ns1:RequestHeader></SOAP-ENV:Header>SOAP-ENV:Bodyns1:getReportDownloadURLns1:reportJobId10160417517</ns1:reportJobId>ns1:exportFormatCSV_DUMP</ns1:exportFormat></ns1:getReportDownloadURL></SOAP-ENV:Body></SOAP-ENV:Envelope>

HTTP/1.1 200 OK^M
Content-Type: text/xml; charset=UTF-8^M
Date: Fri, 29 Jun 2018 17:45:19 GMT^M
Expires: Fri, 29 Jun 2018 17:45:19 GMT^M
Cache-Control: private, max-age=0^M
X-Content-Type-Options: nosniff^M
X-Frame-Options: SAMEORIGIN^M
X-XSS-Protection: 1; mode=block^M
Server: GSE^M
Alt-Svc: quic=»:443″; ma=2592000; v=»43,42,41,39,35″^M
Accept-Ranges: none^M
Vary: Accept-Encoding^M
Connection: close
`
AUTH info:

`[DFP]
networkCode = «4403»
applicationName = «Evolve IQ Platform Brand Campaigns»

[OAUTH2]
clientId = «348011291855-amje5jb8e7e66eok6q1dk1i1dij9vmai.apps.googleusercontent.com»
`

Bug #41983 Error Fetching http headers
Submitted: 2007-07-12 20:56 UTC Modified: 2017-03-31 14:03 UTC
Votes: 1
Avg. Score: 5.0 ± 0.0
Reproduced: 1 of 1 (100.0%)
Same Version: 1 (100.0%)
Same OS: 1 (100.0%)
From: ipso at snappymail dot ca Assigned: dmitry (profile)
Status: Closed Package: SOAP related
PHP Version: 5.2.3 OS: Linux
Private report: No CVE-ID: None

 [2007-07-12 20:56 UTC] ipso at snappymail dot ca

Description:
------------
I'm trying to use a SOAP API on an embedded device, the device is responding to the SOAP request, however PHP is saying there is an error fetching headers.

Reproduce code:
---------------
SOAP Request:
--------------------------------------------------------------------------
POST /iWsService HTTP/1.1
Host: 192.168.1.201
Connection: Keep-Alive
User-Agent: PHP-SOAP/5.2.3
Content-Type: text/xml; charset=utf-8
SOAPAction: "uri:zksoftware#GetDate"
Content-Length: 494
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="uri:zksoftware" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:GetDate><ArgComKey xsi:type="xsd:string">0</ArgComKey></ns1:GetDate></SOAP-ENV:Body></SOAP-ENV:Envelope>


Response from SOAP Server:
--------------------------------------------------------------------------
HTTP/1.0 200 OK
Server: ZK Web Server
Pragma: no-cache
Cache-control: no-cache
Content-Type: text/xml
Connection: close

<?xml version="1.0" encoding="iso8859-1" standalone="no"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<GetDateResponse>
<Row Date='2006-06-24' Time='14:24:11'></Row>
</GetDateResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

However PHP returns: [faultstring] => Error Fetching http headers




Expected result:
----------------
Expect PHP to parse the SOAP response properly.


Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports

 [2007-07-13 08:06 UTC] arrakami at gmail dot com

I have the same problem and i would like to give some feedback too. But i can't find a way to capture the HTTP response. Any suggestions how i could do that? The soap server is 3rd party.

 [2007-07-13 08:34 UTC] dmitry@php.net

It seems like some kind of incompatibility between ext/soap and your soap or HTTP server. To fix the problem I need capture of HTTP response in binary form (including all special chars). Or give me a real PHP code that access buggy SOAP server so I'll able to reproduce it myself.

 [2007-07-13 15:40 UTC] ipso at snappymail dot ca

I emailed a TCP dump of the SOAP request/response to: dmitry@php.net

 [2007-07-19 16:27 UTC] ipso at snappymail dot ca

Just wanted to follow-up and make sure you got the email okay and have all the data you need to help track down the issue?

Thanks for looking into this.

 [2007-07-21 17:20 UTC] ipso at snappymail dot ca

I had someone look into this for me, apparently the device isn't sending the "rn" at the end of the header, but only "n". 

So instead of:
if (strcmp(headerbuf, "rn") == 0) {

Use:
if (strcmp(headerbuf, "rn") == 0 || strcmp(headerbuf, "n") == 0) {

 [2007-07-21 17:22 UTC] ipso at snappymail dot ca

Sorry, here is the file and line that needs changing:

ext/soap/php_http.c:1298

 [2007-07-24 09:28 UTC] dmitry@php.net

This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.


 [2017-03-31 13:51 UTC] maarten dot segers at amplexor dot com

How has this been resolved? We still experience the "Error Fetching http headers" error using SoapClient.

 [2017-03-31 13:53 UTC] spam2 at rhsoft dot net

> How has this been resolved? 
> We still experience the "Error Fetching http headers" 
> error using SoapClient

PHP Version: 5.2.3

how about stop re-open *10 years* old bugreports at least without mentioning you PHP version and if it's below 7.0.0 you won't get any change

 [2017-03-31 14:02 UTC] maarten dot segers at amplexor dot com

PHP 7.0.15-1~dotdeb+8.1

There's a ton of blog posts out there on "Error Fetching http headers" with SoapClient but after ten years the only ticket fixing this cryptic message doesn't explain how.

 [2017-03-31 14:03 UTC] requinix@php.net

-Block user comment: No
+Block user comment: Yes

Понравилась статья? Поделить с друзьями:
  • Exception processing message 0xc0000005 unexpected parameters windows 10 как исправить
  • Exception occurred risen как исправить
  • Exception in tkinter callback как исправить
  • Exception in tkinter callback traceback most recent call last ошибка
  • Exception in thread main java util inputmismatchexception ошибка