返回的JSON MIME类型的问题

时间:2013-03-27 22:14:28

标签: php ios json mamp afnetworking

我有一个返回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服务器中的任何内容有关?提前完成。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

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

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