【问题标题】:issue with returned JSON MIME type返回 JSON MIME 类型的问题
【发布时间】:2013-03-27 22:14:28
【问题描述】:

我有一个返回 JSON 数据的 php API,当我尝试从我的应用程序接收 JSON 时,出现以下错误:

"Expected content type {(\n    \"text/json\",\n    \"application/json\",\n    \"text/javascript\"\n)}, got text/html";

你可能会回答说 php API 没有返回有效的 JSON,嗯,我在 Json Lint 上检查过,它是一个有效的 JSON,而且标头设置为 JSON

    header( 'Content-Type: text/json' );
    echo '{"Response":'.json_encode($arr).'}';

我还检查了 MAMP mime.types 文件,它正确包含 JSON mime 类型。

我唯一怀疑的是,当我通过浏览器调用 API 时,我得到了预期的 JSON,但是当显示页面的源代码时,它在开头显示为 2 个空行。如下所示。

1-   
2-
3-    {"Response":[{"Product ID":"12037","Product Title":"RIng 14K Cloud 9","Product Description":"RIng 14K Cloud 9","Product Wholsale Price":"$255","Product Sale Price":"$460","Category Id":"55","Category Name":"Rings","Product Image":"http:\/\/192.163.1.87:8888\/xxxxxx\/wp-content\/uploads\/2012\/12\/150101.jpg","Product Sub Images":["http:\/\/192.163.1.87:8888\/xxxxx\/wp-content\/uploads\/2012\/12\/150101.jpg"],"SKU":"150101-50","Quantity":"1","Size":"50","Color":"Y","Manufacturer":"xxxxxx"},{"Product ID":"12039","Product Title":"Ring 14K Cloud 9","Product Description":"Ring 14K Cloud 9","Product Wholsale Price":"$255","Product Sale Price":"$460","Category Id":"55","Category Name":"Rings","Product Image":"http:\/\/192.163.1.87:8888\/xxxxx\/wp-content\/uploads\/2012\/12\/150101.jpg","Product Sub Images":["http:\/\/192.163.1.87:8888\/xxxxx\/wp-content\/uploads\/2012\/12\/150101.jpg"],"SKU":"150101-52","Quantity":"1","Size":"52","Color":"Y","Manufacturer":"xxxxxx"}]}

这是否与 php 代码或 MAMP 服务器中的任何内容有关?提前谢谢。

【问题讨论】:

  • 出现错误时,您是如何尝试使用 json 数据的?
  • 将内容类型改为“application/json”
  • json 的正确标头是header('Content-type: application/json')。试试看。
  • 在设置标题并删除它们之前寻找会输出空格的地方。
  • 检查您的 PHP 文件是否使用正确的行尾,以及您的 <?php 开始标签之前是否没有(隐藏)字符

标签: php ios json mamp afnetworking


【解决方案1】:

您的输出在开头有两个空行。输出内容后,您将无法再使用header() 函数更改任何标题。

您的某些文件上的 php 打开/关闭标签之前或之后的空格可能存在一些问题。确保每个文件上的<?php 标记是文件中的第一部分;检查文件编码;不要在 php 结束标记后留下尾随空格,甚至从文件末尾删除所有结束 ?> 标记。

【讨论】:

  • 嗨,谢谢。实际上我做了你提到的所有事情,删除了所有结束标签,标题之前的文件中没有echo。是否有任何 php 函数可以强制 JSON 标头或其他内容?
  • 您是否包含任何其他文件?
  • 我包含了另一个文件,这是导致问题的原因。我怎样才能避免这种情况?
【解决方案2】:

另外,我认为 JSON 的正确标头类型是 application/json:

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

如果使用JSONP,应该是application/javascript:

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

【讨论】:

    猜你喜欢
    • 2012-11-29
    • 2013-09-13
    • 2019-11-01
    • 1970-01-01
    • 2011-08-21
    • 2012-03-28
    • 2020-01-09
    • 1970-01-01
    • 2016-08-18
    相关资源
    最近更新 更多