У меня проблема с SOAP, но я не нашел реального ответа.
try {
$objResponse = $objSoapClient->$strMethod($objMethod->getSoapRequest());
}
catch (SoapFault $e) {
GlobalLogState::write("exception with code(".$e->getCode()."): \n".$e->getMessage());
}
Это мой простой SOAP-запрос в блоке try catch.
Я получаю исключение SoapFault:
Error Fetching http headers
В чем причина этого?
Чтобы исправить эту ошибку, мы можем увеличить либо увеличить время ожидания сокета default_socket_time
в php.ini
или добавить connection_timeout
параметр в массиве параметров передается конструктору SoapClient.
Эти параметры находятся в секунд.
В php.ini
default_socket_timeout = 120
Кроме того, вы можете изменить код
ini_set('default_socket_timeout', 120);
Примечание. Время ожидания сокета по умолчанию в php составляет 60 секунд.
connection_timeout
параметр в конструкторе SoapClient$client = new SoapClient($wsdl, array('connection_timeout' => 120));
Конфигурация, которая работала для меня, определяла в моем 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» возникла мгновенно.
Я надеюсь, что это поможет вам.