【发布时间】:2012-03-30 04:24:40
【问题描述】:
我正在尝试对本地主机中的数据库执行查询并将 JSON 对象发送到 android 中的客户端。我无法知道我的代码中有什么问题。所以请有人在这方面帮助我。
我的 php 代码是我发送 JSON 对象的地方。 php 代码
查询成功执行..
$row=mysql_fetch_array($result1);
$email=$row['EM'];
$pass=$row['PASS'];
$post=array("email"=>$email, "pass"=>$pass);
$posts[] = array("post"=>$post);
//echo "SUCCESS";
header('Content-type: application/json');
echo json_encode(array("posts"=>$posts));
在 android 端,我在下面有这段代码;
HttpResponse response = doPost(url, kvPairs);
String responseBody=response.toString();
String temp = EntityUtils.toString(response.getEntity());
if (temp.compareTo("SUCCESS")==0)
{
Toast.makeText(this, "Working", Toast.LENGTH_LONG).show();
}
以上部分执行.. 下面的代码抛出一个 JSON 异常
JSONObject json = new JSONObject(responseBody);
JSONArray jArray = json.getJSONArray("posts");
no_of_obj=jArray.length();
nemail=new String[no_of_obj];
npass=new String[no_of_obj];
for (int i = 0; i < jArray.length(); i++) {
JSONObject e = jArray.getJSONObject(i);
String s = e.getString("post");
JSONObject jObject = new JSONObject(s);
Toast.makeText(context,jObject.getString("email")+":"+jObject.getString("pass") , duration).show();
nemail[i]=jObject.getString("email");
npass[i]=jObject.getString("pass");
}
在log cat中我可以看到:json字符串必须以“{”开头....
【问题讨论】:
-
你能在日志中输出 JSON 对象,然后在这里发布吗?有时,如果您在开始时有额外的信息(例如,PHP 警告或其他信息),直到您查看从 API 返回的实际数据时才会知道。
-
与最后一个 Java 块相关的异常中的第 # 行会有所帮助
-
这意味着你的网址有问题。检查浏览器中的 url,看看你得到了什么。否则你的
doPost(url,kvpair)方法有问题 -
org.json.JSONException: JSONObject 文本必须以 org.apache.http.message.BasicHttpResponse@44ee70b8 的字符 1 处的“{”开头 这是 logcat 中显示的内容。还有例外是在这一行 JSONObject= new JSONObject(responseBody);
-
在 doPost 中没有错误。我得到了我发送的 php 代码中的值。并且查询也会在数据库上执行。编码 JSON 对象是否有任何错误?