У меня есть пользовательская вспомогательная функция (Codeigniter 3
), которую я создал, которая создает URL-адрес, передает этот URL-адрес в функцию file_get_contents()
, а затем оборачивает все это в функцию json_decode()
и возвращает ее в мой controller
, который загружает view
для обработки. Вот функция:
function get_json($zipcode) {
$api_key = KEY;
$url = 'https://example.com/request.json?api_key=' . $api_key . '&address=' . $zipcode;
return json_decode(file_get_contents($url), true);
}
Я вызываю это в моем контроллере здесь:
$this->load->helper('functions_helper');
$data['json'] = get_json($data['zipcode']);
Затем я создаю таблицу в моем view
на основе возвращенных данных:
<?php if (isset($json)) : ?>
<?php if ($json['metadata']['resultset']['count'] == 0 || http_response_code() == 400): //response code doesn't work ?>
<div class="inline-block">
<h3>We apologize but we couldn't locate any results in your area.</h3>
</div>
<?php else : ?>
<table class="table table-striped table-responsive">
<!-- table elements -->
</table>
<?php endif ?>
<?php endif ?>
Это работает, пока мой источник json api работает и надежен. Однако, если я передаю значение почтового индекса, которое не является действительным почтовым индексом, API возвращает следующее с кодом состояния http 400:
{
"inputs": {
"address": "00607"
},
"metadata": {
"version": "2.0.0",
"resultset": {
"count": 0
}
},
"status": 400,
"errors": [
"Unable to geocode address: 00607"
]
}
Это ломает мою страницу, и я получаю ошибку php вверху failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request
, даже если я пытаюсь получить статус от возвращенного json json['status']
Также, если источник json не работает (http код состояния 500), я получаю то же самое.
Мой вопрос: как я могу проверить код состояния в моей функции, прежде чем передать его на мою страницу? Я попытался проверить перед построением своей таблицы на странице выше, но, конечно, моя страница дает код состояния 200, который является статусом view
построенного controller
, а не статусом фактических результатов JSON.