为什么代码不匹配?PHP Response 和 Android



这是我的java代码

public void login() {
        try {
            httpclient = new DefaultHttpClient();
            httppost = new HttpPost("http://192.168.0.104/rocket/assign_job.php"); // make sure the url is correct.
            //add your data
            nameValuePairs = new ArrayList<NameValuePair>(1);
            // Always use the same variable name for posting i.e the android side variable name and php side variable name should be similar,
            //int smsNum = Integer.parseInt(smsCode.getText().toString());
            nameValuePairs.add(new BasicNameValuePair("smsCode", smsCode));// $Edittext_value = $_POST['Edittext_value'];
            //nameValuePairs.add(new BasicNameValuePair("userName", rocketName));
            Log.d("smsCode ===", smsCode);
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            //Execute HTTP Post Request
            //response=httpclient.execute(httppost);
            ResponseHandler<String> responseHandler = new BasicResponseHandler();
            final String response = httpclient.execute(httppost, responseHandler);
            runOnUiThread(new Runnable() {
                public void run() {
                    Log.d("PHP Response: ", response);
                    pDialog.dismiss();
                }
            });
            if (response.equalsIgnoreCase("success")) {
                runOnUiThread(new Runnable() {
                    public void run() {
                        Toast.makeText(UserPage.this, "Job Assigned", Toast.LENGTH_SHORT).show();
                    }
                });
            } else {
                showAlert();//testing bitbuckettt
            }
        } catch (Exception e) {
            pDialog.dismiss();
            System.out.println("Exception : " + e.getMessage());
        }
    }

这是我的PHP代码:

<?php 
    // include db connect class
    require_once __DIR__ . '/db_connect.php';
    // connecting to db
    $db = new DB_CONNECT();
    if(isset($_POST['smsCode'])){
        $smsCode = $_POST['smsCode'];
        $query_search = "SELECT * FROM confirmedrequest WHERE smsCode='".$smsCode."'";
        $query_exec = mysqli_query($db->getConnection(),$query_search) or die(mysqli_error($db->getConnection()));
        $row = mysqli_num_rows($query_exec);
        if($row == 0){
            echo "failed";
        }else{
            echo "success";
            $rocketName = mysqli_real_escape_string($db->getConnection(),$_POST["userName"]);
            $sql_update = "UPDATE confirmedrequest SET jobTakenBy = '$rocketName' WHERE smsCode = $smsCode ";
            $sql_exec = mysqli_query($db->getConnection(),$sql_update) or die(mysqli_error($db->getConnection())); 
        }
    }else{
        echo "Empty code";
    }

?>

即使代码匹配,logcat 中的 PHP 响应也总是失败。我已经尝试调试了几个小时,但仍然无法解决。我想要的只是在代码匹配时运行下面的代码(response.equalsIgnoreCase("成功"))。

您必须设置标头才能以正确的方式格式化响应:

$db = new DB_CONNECT();
if(isset($_POST['smsCode'])){
    $smsCode = $_POST['smsCode'];
    $query_search = "SELECT * FROM confirmedrequest WHERE smsCode='".$smsCode."'";
    $query_exec = mysqli_query($db->getConnection(),$query_search) or die(mysqli_error($db->getConnection()));
    $row = mysqli_num_rows($query_exec);
    if($row == 0){
        http_response_code(500);
        echo "failed";
    }else{
        http_response_code(200);
        echo "success";
        $rocketName = mysqli_real_escape_string($db->getConnection(),$_POST["userName"]);
        $sql_update = "UPDATE confirmedrequest SET jobTakenBy = '$rocketName' WHERE smsCode = $smsCode ";
        $sql_exec = mysqli_query($db->getConnection(),$sql_update) or die(mysqli_error($db->getConnection())); 
    }
}else{
    http_response_code(400);
    echo "Empty code";
}

相关内容

  • 没有找到相关文章

最新更新