如何在 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 【问题描述】:

我收到来自 androidios 客户端的请求。我将请求存储在一个数组中。 然后我将其编码为 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 响应?

没有 Location 标头的 301 http 响应

如何使用 node-fetch 查看发送的标头?

错误 28105#0:*1 FastCGI 在标准错误中发送:“主要脚本未知”,同时从上游读取响应标头

如何读取在 http 响应中发送的 GZip 内容

Sencha Touch 2 如何获取响应标头