【问题标题】:JSONException End of input at character 0 ofJSONException 字符 0 处的输入结束
【发布时间】:2013-10-16 16:30:40
【问题描述】:

不知何故,我的问题似乎与我可以在网上查找的问题略有不同!

基本上我得到了这个错误:

10-16 12:14:03.561: E/log_tag(1271): org.json.JSONException: End of input at character 0 of 

在尝试从 Eclipse 上的 Android 模拟器检索 php 脚本执行的以下 JSON 结果时:[{"id":"3"}]

根据我的阅读,我的问题意味着我的 php 脚本的 JSON 结果(顺便说一句在我的浏览器中运行良好)是空的,但是怎么会呢?

这是我的 MainActivity 类的代码:

protected Void doInBackground(String... params) {

    //InputStream isr = null;

    // Connect to Database + Webserver
    try {
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(
                "http://10.0.2.2:8080/php/AndroidTest.php"); // My php script adress                                                                    
        httppost.setHeader("Content-Type", "application/json");
        httppost.setHeader("Accept", "JSON");                                                       
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();

        int status = response.getStatusLine().getStatusCode();

        if(status== HttpStatus.SC_OK){
            jsonString = EntityUtils.toString(entity);
        }

        //isr = entity.getContent();
    } catch (Exception e) {
        // TODO: handle exception
        Log.e("log_tag", "Error Connecting to Database/Webserver: " + e.toString());
    }

    //Parse JSON data   
    try {
        String s = "";
        JSONObject jsonObject = new JSONObject(jsonString);
        JSONArray jArray = jsonObject.getJSONArray("id");

        for (int i = 0; i < jArray.length(); i++) {
            //JSONArray jArray = jArray.getJSONArray("id");
            JSONObject json = jArray.getJSONObject(i);
            s = s + "ID: " + json.getString("id");
        }
        finalResult = s;

    } catch (Exception e) {
        // TODO: handle exception
        Log.e("log_tag", "Error Parsing JSON Data: " + e.toString());
    }

    return null;
}

protected void onPostExecute(String result) {
    //MainActivity.resultView.setText("Ergebnis: " + sResult);
    MainActivity.resultView.setText(finalResult);
}

php脚本:

<?php

$con = mysql_connect("localhost","root","mcf");
if (!$con)
{
  die('Could not connect: ' . mysql_error());
}
mysql_select_db("mcf", $con);

$result = mysql_query("SELECT id FROM Fragensatz1");

while($row = mysql_fetch_assoc($result))
{
    $output[]=$row;
}

print(json_encode($output));

mysql_close($con);

?>

【问题讨论】:

  • 你不应该在这里粘贴你的密码!请记住,自 PHP 5.5 起,mysql_* 函数已被弃用。您应该改用 PDO 我们的 MySQLi。
  • 我无法查看10.0.2.2:8080/php/AndroidTest.php btw。
  • 当然你不能,它是一个本地主机地址:P,我被告知有关 MySQL 与 Android 的不同。顺便说一句,我在本地模拟器上运行代码,这就是我使用该地址的原因,只是为了告诉模拟器连接到我的 PC 上运行的本地网络服务器。
  • 哦,我没认出来,因为我习惯了192.168.* 地址。你的 MySQL 没有连接到 Android,只是 PHP 连接到你的 MySQL 服务器。
  • 是的,这就是我想说的,不过你猜出什么问题了吗?

标签: php android json


【解决方案1】:

好的,我发现了问题所在: 1. 我是通过 XAMPP 运行 Apache Webserver,但是也有一个 Tomcat Server 在运行 2. localhost地址没有使用正确的端口,我应该使用80而不是8080!

感谢您的支持和想法!

【讨论】:

    猜你喜欢
    • 2014-08-09
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多