Я пытаюсь получить одну строку из файла JSON.Получение данных из JSON вызывает сбой
Этот файл использует данные, которые хранятся в базе данных MySql.
Следующая LogCat показывает проблему:
09-03 20:05:04.825: E/pass 1(27476): connection success
09-03 20:05:04.825: E/pass 2(27476): connection success
09-03 20:05:04.830: E/Fail 3(27476): org.json.JSONException: Value 29 of type
java.lang.String cannot be converted to JSONObject
Я знаю, что эта ошибка была решена во многих вопросах на Stackoverflow и я перепробовал все решения:
- Использование UTF-8 в каждом документе
- подстрока() каждая строка
- ...
Между тем, я думаю, что это проблема «кода», что-то должно быть неправильно.
Все кодовые части из этого учебника:
Пожалуйста, обратите внимание на:
Android активность:
> try
{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://myserver/msqlup.php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
Log.e("pass 1", "connection success ");
}
catch(Exception e)
{
Log.e("Fail 1", e.toString());
Toast.makeText(getApplicationContext(), "Invalid IP Address",
Toast.LENGTH_LONG).show();
}
try
{
BufferedReader reader = new BufferedReader
(new InputStreamReader(is,"utf-8"),8);
StringBuilder sb = new StringBuilder();
while ((line = reader.readLine()) != null)
{
sb.append(line + "\n");
}
is.close();
result = sb.toString();
Log.e("pass 2", "connection success ");
}
catch(Exception e)
{
Log.e("Fail 2", e.toString());
}
try
{
JSONObject json_data = new JSONObject(result);
String name=(json_data.getString("$new"));
Toast.makeText(getBaseContext(), "Name : "+name,
Toast.LENGTH_SHORT).show();
}
catch(Exception e)
{
Log.e("Fail 3", e.toString());
}
}
msqlup.php
<?php
$host='localhost';
$uname='myname';
$pwd='mypw';
$db="mydb";
$con = mysql_connect($host,$uname,$pwd) or die("connection failed");
mysql_select_db($db,$con) or die("db selection failed");
$r=mysql_query("SELECT Coins from table WHERE new= 1234567");
$abfrage = "
SELECT
Coins
FROM
lunation";
$ergebnis = mysql_query($abfrage) OR die(mysql_error());
while($zeile = mysql_fetch_assoc($ergebnis)){
$new=$zeile["Coins"];
}
print(json_encode($new));
?>
И это то, что я хочу сделать: 1. получить значение «Монеты» из базы данных «таблицы» 2. сохранить его в Android деятельности с использованием строки
Я благодарен за любые советы (:
В java-коде распечатать 'result' и посмотреть, какие чудеса у вас там есть. – Simas
Хорошо, Logcat показывает «29», и это именно то, что должно быть. –
Умм, нет, это не так. – Simas