2010-09-14 6 views
8

Я использую PHP с веб-сервисом Amazon Payments. У меня проблемы с некоторыми из моих запросов. Amazon возвращает ошибку, как и следовало бы, однако то, как это происходит, дает мне проблемы.PHP Получить контент HTTP 400 Ответ

Amazon возвращает данные XML с сообщением об ошибке, но также выдает HTTP 400 (или даже 404 иногда). Это приводит к тому, что file_get_contents() сразу же выдает ошибку, и у меня нет способа получить контент. Я тоже пытался использовать cURL, но так и не получил, чтобы дать ответ.

Мне действительно нужен способ вернуть XML, независимо от кода состояния HTTP. У этого есть важный элемент сообщения, который дает мне подсказки относительно того, почему мои запросы на выставление счетов терпят неудачу.

У кого-нибудь есть пример cURL или иначе, что позволит мне это сделать? Все мои запросы в настоящее время используют file_get_contents(), но я не против их изменения. Все остальные, кажется, считают, что cURL - это «правильный» способ.

ответ

16

Вы должны определить пользовательский контекст потока (третий аргумент функции file_get_contents) с опцией ignore_errors.

+0

Ааа! Это так просто и работает! Спасибо за помощь. Я мог бы понять это, если бы это было не так уж непонятно. – jocull

15

В качестве последующих мер по почте двоемыслия, вот рабочий пример:

$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);