【发布时间】: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 服务器。 -
是的,这就是我想说的,不过你猜出什么问题了吗?