PHP Получить содержимое ответа HTTP 400

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

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

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

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


person jocull    schedule 14.09.2010    source источник


Ответы (2)


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

person Martin    schedule 14.09.2010
comment
Ах! Это так просто и это работает! Спасибо за помощь. Я мог бы понять это, если бы это не было так неясно. - person jocull; 14.09.2010

В качестве продолжения сообщения 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);
person jocull    schedule 14.09.2010