如何在 php 的 HTTP 标头响应中仅发送 JSON 数据?
Posted
技术标签:
【中文标题】如何在 php 的 HTTP 标头响应中仅发送 JSON 数据?【英文标题】:How to send only JSON data in HTTP Header response in php? 【发布时间】:2016-01-23 06:32:32 【问题描述】:我收到来自 android 和 ios 客户端的请求。我将请求存储在一个数组中。 然后我将其编码为 JSON。现在我只想在我的 HTTP 标头中发送 JSON 数据。怎么做?目前它发送 html 页面作为响应,我只想在 200 OK 标头中发送 json 编码数据。
下面是我的代码:
public function index()
$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')
);
$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));
我的回复:
遇到 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":nullarray(10) ["Host"]=>字符串(14)“192.168.50.123”[“连接”]=> 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"]=> 字符串(1) "1" ["User-Agent"]=> string(110) "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like 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"
【问题讨论】:
分享你的 json 响应输出 @VairaMuthu 更新了我的问题检查 您的回复也会显示错误消息? 是的,我不知道为什么显示它 我的解决方案在这里***.com/questions/34961190/… 【参考方案1】:这不是标题问题,您的数组没有“allowed_hours”
Message: Undefined index: allowed_hours
你可以像这样改变你的代码
$allowed_hours = "";
if(!empty($this->input->get('allowed_hours')))
$allowed_hours = $this->input->get('allowed_hours');
$response = array(
'response_code' =>200 ,
'device_id'=> $this->input->get('device_id'),
'allowed_hours'=> $allowed_hours,
'product'=>'mlc',
'prov_ur'=>NULL
);
【讨论】:
以上是关于如何在 php 的 HTTP 标头响应中仅发送 JSON 数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ASPNET.Core Web 应用程序中发送带有 CORS 标头的 HTTP 4xx-5xx 响应?