Я использую PHP с веб-сервисом Amazon Payments. У меня проблемы с некоторыми из моих запросов. Amazon возвращает ошибку, как и следовало бы, однако то, как это происходит, дает мне проблемы.
Amazon возвращает данные XML с сообщением об ошибке, но также выдает HTTP 400 (или даже 404 иногда). Это приводит к тому, что file_get_contents () сразу же выдает ошибку, и у меня нет способа получить контент. Я тоже пытался использовать cURL, но так и не получил, чтобы дать ответ.
Мне действительно нужен способ вернуть XML, независимо от кода состояния HTTP. У этого есть важный элемент сообщения, который дает мне подсказки относительно того, почему мои запросы на выставление счетов терпят неудачу.
Кто-нибудь имеет пример cURL или иначе, что позволит мне это сделать? Все мои запросы в настоящее время используют file_get_contents (), но я не против их изменения. Все остальные, кажется, считают, что cURL – это «правильный» способ.
Вы должны определить пользовательский контекст потока (третий аргумент функции file_get_contents) с опцией ignore_errors .
В качестве продолжения публикации DoubleThink, здесь приведен рабочий пример:
$url = 'http://whatever.com'; //Set stream options $opts = array( 'http' => array('ignore_errors' => true) ); //Create the stream context $context = stream_context_create($opts); //Open the file using the defined context $file = file_get_contents($url, false, $context);