返回在android中的yii控制器中形成的JSON时出错

时间:2013-07-04 19:51:39

标签: android json yii

我已经在yii中成功创建了一个JSON API,我在http://jsonlint.com/上验证并使用jquery $ .getJSON()在Web应用程序中使用;

到目前为止,一切都运转良好

但是当我使用相同的URL访问我的Android应用程序中的相同API时,它会给我错误

07-05 00:57:45.548: E/JSON Parser(28866): Error parsing data org.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObject

所以我再次尝试将yii生成的所有JSON复制到一个文件中,并将其命名为mydata.json,并尝试从我的Android应用程序中获取此JSON,是的,一切正常。

所以我总结说yii可能有问题,但我无法弄清楚我的API生成方法是

public function actionMycontroller{
    header('Content-type: application/json');
    header('Access-Control-Allow-Origin: *');
            $json="    all my json generation code";
            echo json_encode($json);
        Yii::app()->end();  
 }

我现在应该怎么做来调试我的错误?

1 个答案:

答案 0 :(得分:3)

<!DOCTYPE表示您的服务输出纯json。它可能包含在一个html包装器中,例如你真的得到了

<!DOCTYPE ...>
<html>
<body>
...json goes here...
</body>
</html>

换句话说,你的控制器正试图吐出一个完整的HTML页面,而不仅仅是应该输出的json响应。