Я делаю Remote::get
запрос к API, который отвечает с http 500
когда что-то идет не так. Дело в том, что это также дает {errorCode: x}
как более подробное описание того, что пошло не так в тексте ответа. На некоторых кодах ошибок мне нужно предпринять разные действия.
Моя проблема в том, что Кохана выбрасывает исключение на http 500
ответы и, следовательно, запекает в моем легко разбираемом тексте ответа в «словесное» сообщение об ошибке в объекте исключения.
Есть ли способ получить текст ответа Remote::get
на http 500
ответ без необходимости разбирать длинное описание ошибки?
Невозможно. Взгляни на исходный код
if ($code AND $code < 200 OR $code > 299)
{
$error = $response;
}
...
if (isset($error))
{
throw new Kohana_Exception('Error fetching remote :url [ status :code ] :error',
array(':url' => $url, ':code' => $code, ':error' => $error));
}
Kohana_Exception не сильно помогает
public function __construct($message, array $variables = NULL, $code = 0)
{
// Set the message
$message = __($message, $variables);
// Pass the message to the parent
parent::__construct($message, $code);
}
Так что все вещи объединены в одно сообщение.
Как насчет использования другого HTTP-клиента? Например пропивать — легче вернуть тело по ошибке.
Других решений пока нет …