【问题标题】:JSONException: Value <br cannot be converted into JSONobjectJSONException: Value <br 无法转换为 JSONobject
【发布时间】:2018-07-13 18:57:38
【问题描述】:

我正在使用带有 MySQL 数据库的 xampp 服务器制作一个简单的登录页面。我不断收到上面的错误,不幸的是,找不到正确的答案。我使用的是真正的安卓手机而不是模拟器。日志框似乎没有显示任何类型的错误,所以我不确定出了什么问题。在此先感谢

LoginActivity.java

public class LoginActivity extends AppCompatActivity {

private static String LOGIN_URL = "http://192.168.43.231/Login/login.php";
public static final String KEY_USERNAME = "username";
public static final String KEY_PASSWORD = "password";

@Override
protected void onCreate(Bundle savedInstanceState) {
    .....
    login.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            final String usernameS = username.getText().toString().trim();
            final String passwordS = password.getText().toString().trim();

            if (usernameS.isEmpty() || passwordS.isEmpty()) {
                Toast.makeText(LoginActivity.this, "Enter Valid Username & Password", Toast.LENGTH_SHORT).show();
            } else {

                StringRequest stringRequest = new StringRequest(Request.Method.POST, LOGIN_URL,
                        new Response.Listener<String>() {
                            @Override
                            public void onResponse(String response) {
                                try {
                                    JSONObject jsonObject = new JSONObject(response);
                                    boolean responseStatus = jsonObject.getBoolean("success");
                                    if (responseStatus) {
                                        Intent intent = new Intent(LoginActivity.this, MainActivity.class);
                                        LoginActivity.this.startActivity(intent);
                                    } else {
                                        Toast.makeText(LoginActivity.this, "Invalid Username or Password", Toast.LENGTH_SHORT).show();

                                    }
                                } catch (JSONException e) {
                                    e.printStackTrace();
                                    Toast.makeText(LoginActivity.this,"Error" + e.toString(), Toast.LENGTH_LONG).show();
                                }
                            }
                        },
                        new Response.ErrorListener() {
                            @Override
                            public void onErrorResponse(VolleyError error) {
                                Toast.makeText(LoginActivity.this, error.toString(), Toast.LENGTH_LONG).show();
                            }
                        }) {
                    @Override
                    protected Map<String, String> getParams() throws AuthFailureError {
                        Map<String, String> params = new HashMap<String, String>();
                        params.put(KEY_USERNAME, usernameS);
                        params.put(KEY_PASSWORD, passwordS);

                        return params;
                    }
                };
                RequestQueue requestQueue =Volley.newRequestQueue(LoginActivity.this);
                requestQueue.add(stringRequest);
            }
        }
    });
}

}

PHP 代码

<?php
$con=mysqli_connect("localhost","root","","blast");

$username=$_POST['username']);
$password=$_POST['password']);

$sql=mysqli_prepare($con,"SELECT * from blast_user where username = '$username' and password = '$password'");
mysqli_stmt_bind_param($sql,"sss",$username,$password);
mysqli_stmt_execute($sql);
mysqli_stmt_store_result($sql);
mysqli_stmt_bind_result($sql,$username,$password);

$response=array();
$response["success"]=true;

echo json_encode($response);
>?

【问题讨论】:

  • 您是否检查过您的 php 脚本的原始响应是什么?我猜输出中有一些 php 警告或通知,因此污染了应该是纯 json 的内容。
  • "JSONException: Value
    <br 看起来您的 PHP 代码正在生成 html 输出(可能是一个通知).. 这个 &gt;? 在de PHP 代码应该是?&gt;
  • 您正在尝试使用准备好的语句,但也没有提供任何占位符来绑定。你的 SQL 应该是 SELECT * from blast_user where username = ? and password = ? ...随后你只需要两个 smysqli_stmt_bind_param($sql,"ss",$username,$password);

标签: php android mysql json


【解决方案1】:

这样做 -

$username=$_POST['usernameS']);
$password=$_POST['passwordS']);

而不是-

$username=$_POST['username']);
$password=$_POST['password']);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    相关资源
    最近更新 更多