【发布时间】:2016-04-11 05:06:45
【问题描述】:
编辑:20020-20020/practice.mysql_php_json I/System.out:org.json.JSONException:java.lang.String 类型的值 br 无法转换为 JSONObjectww 是我收到的终端中的消息。
按照 youtube 上的教程,我正在努力让一个简单的插入和检索应用程序在 android 中工作。应该相当简单,我可以将用户信息发布到在线数据库,但是当我去检索它时,什么也没有发生。没有收到任何错误,只是没有收到任何 JSON 响应。
我刚刚开始使用 JSON 和 php,所以我不知道我是没有得到什么还是缺少一些小东西。
这是我的 connection.php,我知道我的凭据是正确的,因为我可以插入。
<?php
define('hostname', '--------');
define('user', '---------');
define('password', '-------');
define('database', '------------------');
$connect = mysqli_connect(hostname, user, password, database);
?>
这是我的 insertUser.php
<?php
if($_SERVER["REQUEST_METHOD"]=="POST") {
require 'connection.php';
createUser();
}
function createUser() {
global $connect;
$name = $_POST["name"];
$email = $_POST["email"];
$password = $_POST["password"];
$query = " Insert into user_table(user_name, user_email, user_password) values ('$name','$email','$password');";
mysqli_query($connect, $query) or die (mysqli_error($connect));
mysqli_close($connect);
}
?>
这是我的 showUsers.php
<?php
if($_SERVER["REQUEST_METHOD"]=="GET"){
include 'connection.php';
showStudent();
}
function showStudent()
{
global $connect;
$query = " Select * FROM users; ";
$result = mysqli_query($connect, $query);
$number_of_rows = mysqli_num_rows($result);
$temp_array = array();
if($number_of_rows > 0) {
while ($row = mysqli_fetch_assoc($result)) {
$temp_array[] = $row;
}
}
header('Content-Type: application/json');
echo json_encode(array("users"=>$temp_array));
mysqli_close($connect);
}
?>
现在这是我在 Main Activity 中的 Android 应用程序代码。这应该只是获取我数据库中用户的姓名、电子邮件和密码。我有另一种 onclick 方法来插入用户。
showButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
JsonObjectRequest jsonObjectRequest; = new JsonObjectRequest(Request.Method.GET, showURL, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONArray users = response.getJSONArray("users");
for(int i=0; i<users.length(); i++) {
JSONObject user = users.getJSONObject(i);
String name = user.getString("user_name");
String email = user.getString("user_email");
String password = user.getString("user_password");
results.append(name);
}
results.append("\n");
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
requestQueue.add(jsonObjectRequest);
}
});
【问题讨论】:
-
在浏览器中调用 showUsers.php 会得到什么?有什么错误吗?
-
杰夫,没有得到任何错误。屏幕上根本没有显示任何内容。虽然我刚刚在日志中注意到我得到 20020-20020/practice.mysql_php_json I/System.out: org.json.JSONException: Value
-
Jeremy,我确实在最后一组编码中将内容类型设置在顶部。它必须在脚本页面的顶部吗?
-
您在 android 中遇到的错误是因为 php 没有返回有效的 json。所以首先让 php 工作(在浏览器中)。看起来用户表是空的?
标签: php android mysql json database