Как отправить собственный HTTP-заголовок в ответ?

Я хочу отправить данные json в свой HTTP-заголовок.

Я использую Codeigniter PHP, поэтому я сделал это в своем контроллере:

header('Content-Type: application/json');' 

Это мой код:

 $request = array( 'request' => $_GET['request'], 'device_id' => $_GET['device_id'], 'launch_date'=> $_GET['launch_date'], 'allowed_hours'=>$_GET['allowed_hours'], 'site_id'=>$_GET['site_id'], 'product'=>$_GET['product'], 'software_version'=>$_GET['software_version'], 'platform_os'=>$_GET['platform_os'], 'platform'=>$_GET['platform'], 'platform_model'=>$_GET['platform_model'] ); $response = array( 'response_code' =>200 , 'device_id'=>$_GET['device_id'], 'allowed_hours'=>$_GET['allowed_hours'], 'product'=>'mlc', 'prov_ur'=>NULL ); header('Content-Type: application/json'); echo json_encode( $response ); 

Но когда я печатаю свой заголовок, я получаю

Возникла ошибка PHP

Уровень важности: уведомление

Сообщение: Неопределенный индекс: запрос

Имя файла: admin / license.php

Номер строки: 22

Возникла ошибка PHP

Уровень важности: уведомление

Сообщение: Неопределенный индекс: allowed_hours

Имя файла: admin / license.php

Номер строки: 25

Возникла ошибка PHP

Уровень важности: уведомление

Сообщение: Неопределенный индекс: allowed_hours

Имя файла: admin / license.php

Номер строки: 40

{"response_code": 200, "device_id": "70D0D01FBAD2", "allowed_hours": null, "product": "mlc", "prov_ur": null} array (10) {["Host"] => string (14 ) "192.168.50.123" ["Connection"] =>
string (10) "keep-alive" ["Cache-Control"] => string (9) "max-age = 0" ["Accept"] => string (74) "text / html, application / xhtml + xml , application / xml; q = 0.9, image / webp, / ; q = 0.8 "[" Upgrade-Insecure-Requests "] => string (1)" 1 "[" User-Agent "] =>
строка (110) «Mozilla / 5.0 (Windows NT 10.0; WOW64) AppleWebKit / 537.36 (KHTML, например, Gecko) Chrome / 47.0.2526.111 Safari / 537.36"
["Accept-Encoding"] => string (19) "gzip, deflate, sdch"
["Accept-Language"] => string (14) "en-US, en; q = 0.8" ["Cookie"] =>
Строка (518) "cisession = OhhBBhVodwwf7Tb55AVsU32ClMS5cgmxBl15WHA% 2BrGnvo1kiK% 2B67BWeAuJVSV2MY25zZd0riHC9cyx9fiigiBuqkPMT% 2FKE9d6et% 2FXaE3F7I59P9% 2FEzy5byQ5nEkJq5xwXoH1I7% 2B7v62cQL21% 2Bjfnk3AwIy4luM7N51IUuTqg7TxunoZFD1gJO84r8degY1imNpmDk2W% 2FjsQPn9bQpkWJ9KVMxxViFDaELEU0rIfYmif% 2BdvXjK9W% 2Fj7iWQxZYE9ZGazgBTKlLO% 2BJZHNdPrdmGPFTzTUROZdffpF% 2Bb25bRMPEJsZ9CE2mdVuSn% 2FEu678utd0lcd9bh% 2BDbTDikrHP4jBFOLbZfWKT% 2F9r5GkMBrLBl% 2BlvPx9RbAq% 2FIsjeA1V7c6JYf41TO1bG2XKT14QFHm8m0qY8HCal% 2B% 2BR8tZe9i3zy24% 3Dcfc459942e4ef82a5554257216a19d621f446a25" [ «If-Modified-Since»] => string (29) «Thu, 01 Jan 1970 00:00:00 GMT»}

 {"response_code":200,"device_id":"70D0D01FBAD2","allowed_hours":null,"product":"mlc","prov_ur":null} 

в моем ответе. Я не хочу отправлять другие данные в ответе заголовка HTTP.

Усовершенствованный код согласно CI

 public function index() { $request = array( 'request' => $this->get('request'), 'device_id' => $this->get('device_id'), 'launch_date'=> $this->get('launch_date'), 'allowed_hours'=>$this->get('allowed_hours'), 'site_id'=> $this->get('site_id'), 'product'=>$this->get('product'), 'software_version'=> $this->get('software_version'), 'platform_os'=> $this->get('platform_os'), 'platform'=> $this->get('platform'), 'platform_model'=> $this->get('platform_model') ); $response = array( 'response_code' =>200 , 'device_id'=> $this->get('device_id'), 'allowed_hours'=> $this->get('allowed_hours'), 'product'=>'mlc', 'prov_ur'=>NULL ); $this->output->set_content_type('Content-Type: application/json'); return $this->output ->set_content_type('Content-Type: application/json') ->set_output(json_encode($response)); echo $response; } 

Solutions Collecting From Web of "Как отправить собственный HTTP-заголовок в ответ?"

Использование обычного php, как показано ниже, иногда вызывает некоторые ошибки

 $_GET['allowed_hours']; 

Я бы порекомендовал изменения в методах ввода класса CodeIgniter.

 $this->input->get('allowed_hours'); 

Codeigniter Input Class сохранит вас, добавив много кода.

Как сказано в руководстве пользователя: с встроенными методами CodeIgniter вы можете просто сделать это:

Обновлено:

 $request = array( 'request' => $this->input->get('request'), 'device_id' => $this->input->get('device_id'), 'launch_date'=> $this->input->get('launch_date'), 'allowed_hours'=> $this->input->get('allowed_hours'), 'site_id'=> $this->input->get('site_id'), 'product'=>$this->input->get('product'), 'software_version'=> $this->input->get('software_version'), 'platform_os'=> $this->input->get('platform_os'), 'platform'=> $this->input->get('platform'), 'platform_model'=> $this->input->get('platform_model') ); 

Codeigniter имеет собственный класс вывода

А также

 $response = array( 'response_code' => 200, 'device_id'=> $this->input->get('device_id'), 'allowed_hours'=> $this->input->get('allowed_hours'), 'product'=> 'mlc', 'prov_ur'=> NULL ); return $this->output ->set_content_type('Content-Type: application/json') ->set_output(json_encode($response)); 

Проблема в том, что некоторые из ваших переменных $_GET не заданы, это вызовет ошибку (дополнительный выходной текст у вас есть) и может быть предотвращено, если сначала они пустые, прежде чем использовать их.

 $request = array( 'request' => !empty($_GET['request']) ? $_GET['request'] : '', 'device_id' => !empty($_GET['device_id']) ? $_GET['device_id'] : '', 'launch_date'=> !empty($_GET['launch_date']) ? $_GET['launch_date'] : '', 'allowed_hours'=> !empty($_GET['allowed_hours']) ? $_GET['allowed_hours'] : '', 'site_id'=> !empty($_GET['site_id']) ? $_GET['site_id'] : '', 'product'=> !empty($_GET['product']) ? $_GET['product'] : '', 'software_version'=> !empty($_GET['software_version']) ? $_GET['software_version'] : '', 'platform_os'=> !empty($_GET['platform_os']) ? $_GET['platform_os'] : '', 'platform'=> !empty($_GET['platform']) ? $_GET['platform'] : '', 'platform_model'=> !empty($_GET['platform_model']) ? $_GET['platform_model'] : '' ); $response = array( 'response_code' =>200 , 'device_id'=> !empty($_GET['device_id']) ? $_GET['device_id'] : '', 'allowed_hours'=> !empty($_GET['allowed_hours']) ? $_GET['allowed_hours'] : '', 'product'=>'mlc', 'prov_ur'=>NULL ); header('Content-Type: application/json'); echo json_encode( $response );