2017-02-20 5 views
0

Я делаю запрос Remote::get API, который отвечает http 500, когда что-то пойдет не так. Дело в том, что он также дает {errorCode: x} как более подробное описание того, что пошло не так в тексте ответа. На некоторых кодах ошибок мне нужно предпринять разные действия.Использование Kohana Remote :: get throws exception на http 500, но мне нужен текст ответа

Моя проблема заключается в том, что Kohana генерирует исключение в ответах http 500 и, таким образом, печет в моем легко анализируемом тексте ответа в «многословном» сообщении об ошибке в объекте исключения.

Есть ли способ получить текст ответа Remote::get на ответе http 500, не анализируя подробное описание ошибки?

ответ

1

Невозможно. Посмотрите на source code

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-клиентов? Например Guzzle - легче retrieve the body on error.

Смежные вопросы