php - 一个奇怪的错误解析数据 org.json.JSONException : End of input at character 0 of

标签 php android mysql

我知道这是一个习惯性问题;但是我的真的很奇怪。我在另一个上下文中完成了完全相同的代码,但不是在 th

    String result = "";
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://192.168.1.145/test/getActivities.php");
    //httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    HttpResponse response = httpclient.execute(httppost);
    HttpEntity entity = response.getEntity();
    InputStream is = entity.getContent();
    //convert response to string
    BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
    StringBuilder sb = new StringBuilder();
    String line = null;
    while ((line = reader.readLine()) != null) {
        sb.append(line + "\n");
    }
    is.close();
    result=sb.toString();
    try{
        JSONArray jArray = new JSONArray(result);
        Log.e("log_tag", "lool");
        for(int i=0;i<jArray.length();i++){
            JSONObject json_data = jArray.getJSONObject(i);
            if (json_data.getString("friendly_url").toString().length() == 2){
                Sectors.add(new BasicNameValuePair(json_data.getString("title").toString(),json_data.getString("friendly_url").toString()));
            }
            else if(json_data.getString("friendly_url").toString().length() == 3){
                Branchs.add(new BasicNameValuePair(json_data.getString("title").toString(),json_data.getString("friendly_url").toString()));
            }
            else if(json_data.getString("friendly_url").toString().length() == 4){
                SBranches.add(new BasicNameValuePair(json_data.getString("title").toString(),json_data.getString("friendly_url").toString()));
            }
            else{
                SBranches.add(new BasicNameValuePair(json_data.getString("title").toString(),json_data.getString("friendly_url").toString()));
            }
            String[] lesSec = new String[Sectors.size()];
            for (int u = 0; u < Sectors.size(); u ++)
                lesSec[u] = jArray.getJSONObject(u).getString("title");
            setSectors(lesSec);
            Log.e("log_tag", lesSec[1]);

        }
    }catch(JSONException e){
        Log.e("log_tag", "Error parsing data "+e.toString());
    }

}catch(Exception e){
    Log.e("log_tag", "Error in http connection "+e.toString());
}

这是 PHP 文件

<?php
$response = array();
$response["success"] = 0;
$response["message"] = "No products found";//*/


@mysql_connect("host","user","");
@mysql_select_db("db");

$q=@mysql_query("SELECT title, friendly_url FROM table");
while($e=@mysql_fetch_assoc($q))
        $OUTPUT[]=$e;

print(json_encode($OUTPUT));
print_r ($OUTPUT);


@mysql_close();
?>

谁能看出问题所在? 我尝试打印 $OUTPUT,结果就是这样

Array ( [0] => Array ( [title] => Activités de services autres et institutions 
                       [friendly_url] => 15 
                     ) 
        [1] => Array ( [title] => Batiment, travau ...etc

最佳答案

在发送任何输出之前尝试 header('Content-Type: application/json');

如您在答案中所示,您得到的结果实际上不是 JSON!

看看 JSON 应该是什么样子:

{
    "glossary": {
        "title": "example glossary",
        "GlossDiv": {
            "title": "S",
            "GlossList": {
                "GlossEntry": {
                    "ID": "SGML",
                    "SortAs": "SGML",
                    "GlossTerm": "Standard Generalized Markup Language",
                    "Acronym": "SGML",
                    "Abbrev": "ISO 8879:1986",
                    "GlossDef": {
                        "para": "A meta-markup language, used to create markup languages such as DocBook.",
                        "GlossSeeAlso": ["GML", "XML"]
                    },
                    "GlossSee": "markup"
                }
            }
        }
    }
}

来源:http://json.org/example.html

数组如下所示:[ "one", "two", "three"]

从您的 PHP 脚本中删除 print_r,它不会生成有效的 JSON 格式,并且在 JSON 字符串使输出完全无效后后续文本。

纠正该问题后,您还应该检查 PHP 函数 mb_internal_encodingmb_http_output 返回的内容,并将其与 java 中的预期编码进行比较。

关于php - 一个奇怪的错误解析数据 org.json.JSONException : End of input at character 0 of,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37133960/

相关文章:

php - ZF1 的 quoteInto() 方法在 ZF2 中的等价物是什么?

Android TextView 不会扩展以匹配父级

带条件的字段的 MySQL SUM,IF(SUM(bill_1) IS NULL, '99' , SUM(bill_1)) AS tot_bill_1

php - 在 php 中复制之前将日期附加到文件名

javascript - Ajax 调用未获得成功响应

android - 使用 cameraX 的 PreviewView 捕获叠加层

java - 当我去参加另一个 Activity (CatActivity)时,如何停止音乐?

python - 如何使用Python有效地将CSV文件数据插入到MYSQL中?

php - 使用 PHP PDO 从数据库中的文本框保存值(在从数据库中获取值时显示值)

PHP 和 MySQL : explode 2 strings into a three different fields on a table