PHP получает содержимое ответа HTTP 400 - PullRequest
10 голосов
/ 14 сентября 2010

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

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

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

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

Ответы [ 2 ]

18 голосов
/ 14 сентября 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);
18 голосов
/ 14 сентября 2010

Необходимо определить пользовательский контекст потока (3-й аргумент функции file_get_contents) с включенной опцией ignore_errors .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...