错误:E/JSON解析器﹕;分析数据org.json.JSONException时出错:无法将java.lang.String类型的值Hello转换为JSONObject

错误:E/JSON解析器﹕;分析数据org.json.JSONException时出错:无法将java.lang.String类型的值Hello转换为JSONObject,java,php,android,json,Java,Php,Android,Json,当我点击我的登录按钮,我不知道为什么,我不知道为什么它会在错误中说Hello,我搜索了我的整个项目,没有找到“Hello”的出现。这个错误还有其他原因吗 public class Login extends Activity implements OnClickListener { private EditText user, pass; private Button mSubmit, mRegister; // Progress Dialog private

当我点击我的登录按钮,我不知道为什么,我不知道为什么它会在错误中说Hello,我搜索了我的整个项目,没有找到“Hello”的出现。这个错误还有其他原因吗

public class Login extends Activity implements OnClickListener {

    private EditText user, pass;
    private Button mSubmit, mRegister;

    // Progress Dialog
    private ProgressDialog pDialog;

    // JSON parser class
    JSONParser jsonParser = new JSONParser();




    private static final String LOGIN_URL = "http://xxxxxxxxxxxx";



    private static final String TAG_SUCCESS = "success";
    private static final String TAG_MESSAGE = "message";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);

        // setup input fields
        user = (EditText) findViewById(R.id.username);
        pass = (EditText) findViewById(R.id.password);

        // setup buttons
        mSubmit = (Button) findViewById(R.id.login);
        mRegister = (Button) findViewById(R.id.register);

        // register listeners
        mSubmit.setOnClickListener(this);
        mRegister.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
            case R.id.login:
                new AttemptLogin().execute();
                break;
            case R.id.register:
                Intent i = new Intent(this, Register.class);
                startActivity(i);
                break;

            default:
                break;
        }
    }

    class AttemptLogin extends AsyncTask<String, String, String> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(Login.this);
            pDialog.setMessage("Attempting login...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();
        }

        @Override
        protected String doInBackground(String... args) {
            // TODO Auto-generated method stub
            // Check for success tag
            int success;
            String username = user.getText().toString();
            String password = pass.getText().toString();
            try {
                // Building Parameters
                List<NameValuePair> params = new ArrayList<NameValuePair>();
                params.add(new BasicNameValuePair("username", username));
                params.add(new BasicNameValuePair("password", password));

                Log.d("request!", "starting");
                // getting product details by making HTTP request
                JSONObject json = jsonParser.makeHttpRequest(LOGIN_URL, "POST",
                        params);

                // check your log for json response
                Log.d("Login attempt", json.toString());

                // json success tag
                success = json.getInt(TAG_SUCCESS);
                if (success == 1) {
                    Log.d("Login Successful!", json.toString());
                    // save user data
                    SharedPreferences sp = PreferenceManager
                            .getDefaultSharedPreferences(Login.this);
                    Editor edit = sp.edit();
                    edit.putString("username", username);
                    edit.commit();

                    Intent i = new Intent(Login.this, MainActivity.class);
                    finish();
                    startActivity(i);
                    return json.getString(TAG_MESSAGE);
                } else {
                    Log.d("Login Failure!", json.getString(TAG_MESSAGE));
                    return json.getString(TAG_MESSAGE);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }

            return null;

        }

        protected void onPostExecute(String file_url) {
            // dismiss the dialog once product deleted
            pDialog.dismiss();
            if (file_url != null) {
                Toast.makeText(Login.this, file_url, Toast.LENGTH_LONG).show();
            }

        }

    }

}
公共类登录扩展活动实现OnClickListener{
私人编辑文本用户,通过;
私人按钮mSubmit,mRegister;
//进度对话框
私人对话;
//JSON解析器类
JSONParser JSONParser=新的JSONParser();
私有静态最终字符串登录\u URL=”http://xxxxxxxxxxxx";
私有静态最终字符串标记_SUCCESS=“SUCCESS”;
私有静态最终字符串标记_MESSAGE=“MESSAGE”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
//设置输入字段
user=(EditText)findViewById(R.id.username);
pass=(EditText)findViewById(R.id.password);
//设置按钮
mSubmit=(按钮)findviewbyd(R.id.login);
mRegister=(按钮)findviewbyd(R.id.register);
//注册侦听器
mSubmit.setOnClickListener(这个);
mRegister.setOnClickListener(此);
}
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
开关(v.getId()){
案例R.id.login:
新建AttemptLogin().execute();
打破
案例R.id.登记册:
意图i=新意图(这是Register.class);
星触觉(i);
打破
违约:
打破
}
}
类AttemptLogin扩展了AsyncTask{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
pDialog=newprogressdialog(Login.this);
setMessage(“正在尝试登录…”);
pDialog.setUndeterminate(假);
pDialog.setCancelable(真);
pDialog.show();
}
@凌驾
受保护的字符串doInBackground(字符串…args){
//TODO自动生成的方法存根
//检查成功标签
成功;
字符串username=user.getText().toString();
字符串密码=pass.getText().toString();
试一试{
//建筑参数
List params=new ArrayList();
添加(新的BasicNameValuePair(“用户名”,用户名));
添加(新的BasicNameValuePair(“密码”,password));
Log.d(“请求!”,“启动”);
//通过发出HTTP请求获取产品详细信息
JSONObject json=jsonParser.makeHttpRequest(登录地址,“POST”,
参数);
//检查日志中的json响应
Log.d(“登录尝试”,json.toString());
//json成功标记
success=json.getInt(TAG_success);
如果(成功==1){
Log.d(“登录成功!”,json.toString();
//保存用户数据
SharedReferences sp=首选项管理器
.getDefaultSharedReferences(Login.this);
Editor edit=sp.edit();
edit.putString(“用户名”,用户名);
edit.commit();
意图i=新意图(Login.this,MainActivity.class);
完成();
星触觉(i);
返回json.getString(TAG_消息);
}否则{
Log.d(“登录失败!”,json.getString(TAG_MESSAGE));
返回json.getString(TAG_消息);
}
}捕获(JSONException e){
e、 printStackTrace();
}
返回null;
}
受保护的void onPostExecute(字符串文件\u url){
//删除产品后关闭对话框
pDialog.disclose();
如果(文件url!=null){
Toast.makeText(Login.this,file_url,Toast.LENGTH_LONG.show();
}
}
}
}
编辑代码

<?php
       if (!isset($_SESSION)) {
  session_start();
}


//load and connect to MySQL database stuff
require("config.inc.php");




if (!empty($_POST)) {
$query = "SELECT id,password, username, iv FROM users WHERE username = :username";




    $username = $_POST['username'];

    //encrypting the username and password to compare to the ones stored in the databaase



 $query_params = array(
        ':username' => $username,
    );

    try {
        $stmt   = $db->prepare($query);
        $result = $stmt->execute($query_params);


    }
    catch (PDOException $ex) {

        $response["success"] = 0;
        $response["message"] = "Database Error1. Please Try Again!";
        die("Failed to run query: " . $ex->getMessage());

    }




    //fetching all the rows from the query

        $password = $_POST['password'];

    $row = $stmt->fetch();
    $key = $row['iv'];
    $encrypted_password = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $secret_key, $password, MCRYPT_MODE_CBC, $key); 
 if ($row) {
        if ($encrypted_password == $row['password']) {


            $login_ok = true;
        }
    }

    if ($login_ok) {
        $response["success"] = 1;
        $response["message"] = "Login successful!";
        die(json_encode($response));
       echo json_encode($response);



    } else {
        $response["success"] = 0;
        $response["message"] = "Invalid Credentials!";
        die(json_encode($response));
    }

} else {
?>
                <h1>Login</h1>
                <form action="login.php" method="post">
                    Username:<br />
                    <input type="text" name="username" placeholder="username" />
                    <br /><br />
                    Password:<br />
                    <input type="password" name="password" placeholder="password" value="" />
                    <br /><br />
                    <input type="submit" value="Login" />
                </form>
                <a href="register.php">Register</a>
        <?php
}

?>

登录
用户名:


密码:



您的JSONParser类可能有问题,或者服务器的响应可能返回“hello”。你能把这个类也发出来让事情更清楚吗。

我找到了hello字符串,它是我删除的一个小回音。我现在收到了这个消息,“Error parsing data org.json.JSONException:Value json响应为{“success”:1,“message”:“Login successful!”}我认为您没有从服务器获得正确的响应。检查服务器端是否为您的登录查询返回正确的结果。这不是吗?{“success”:1,“message”:“Login successful!”}是的。你仍然收到解析异常吗?你能发布最新的异常日志吗?