2017-03-27 21 views
-1

我在Android應用程序中提供登錄服務,但登錄時遇到問題。 我註冊了一個示例數據並嘗試登錄後,登錄按鈕以「BasicNetwork.performRequest:http://ekb2011.cafe24.com/Login.php的意外響應代碼500」消息響應。登錄過程不起作用

這是我的登錄用PHP代碼。

<?php 
 
\t $con = mysqli_connect("localhost","ekb2011","*********","ekb2011"); 
 
\t 
 
\t $userID = $_POST["userID"]; 
 
\t $userPassword = $_POST["userPassword"]; 
 
\t 
 
\t $statement = mysqli_prepare($con, "SELECT * FROM USER WHERE userID = ? AND userPassword = ?"); 
 
\t mysqli_stmt_bind_param($statement, "ss", $userID, $userPassword); 
 
\t mysqli_stmt_execute($statement); 
 
\t 
 
\t mysqli_stmt_store_result($statement); 
 
\t mysqli_stmt_bind_result(&statement, $userID, $userPassword, $userName); 
 
\t 
 
\t $response = array(); 
 
\t $response["success"] = false; 
 
\t 
 
\t while(mysqli_stmt_fetch($statement)){ 
 
\t \t $response["success"] = true; 
 
\t \t $response["userID"] = $userID; 
 
\t \t $response["userPassword"] = $userPassword; 
 
\t \t $response["userName"] = $userName; \t 
 
\t } 
 
\t echo json_encode($response); 
 
?>

而下面是我的應用程序執行的Java代碼。

LoginActivity.java

public class LoginActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login); 

    final EditText idText=(EditText)findViewById(R.id.idText); 
    final EditText passwordText=(EditText)findViewById(R.id.passwordText); 

    final Button loginButton=(Button)findViewById(R.id.loginButton); 
    final TextView registerButton = (TextView)findViewById(R.id.registerButton); 
    final CheckBox loginCheckBox = (CheckBox)findViewById(R.id.logincheckBox); 



    registerButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent registerIntent=new Intent(LoginActivity.this, RegisterActivity.class); 
      LoginActivity.this.startActivity(registerIntent); 
     } 
    }); 
    loginButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      final String userID=idText.getText().toString(); 
      final String userPassword=passwordText.getText().toString(); 

      Response.Listener<String> responseListener=new Response.Listener<String>(){ 

       @Override 
       public void onResponse(String response) { 
        try{ 
         JSONObject jsonResponse=new JSONObject(response); 
         boolean success=jsonResponse.getBoolean("success"); 
         if(success){ 
          String userID=jsonResponse.getString("userID"); 
          String userPassword=jsonResponse.getString("userPassword"); 
          Intent intent=new Intent(LoginActivity.this, MainActivity.class); 
          intent.putExtra("userID",userID); 
          intent.putExtra("userPassword",userPassword); 
          LoginActivity.this.startActivity(intent); 
         } 
         else{ 
          AlertDialog.Builder builder=new AlertDialog.Builder(LoginActivity.this); 
          builder.setMessage("Failed to Login") 
            .setNegativeButton("Try Again", null) 
            .create() 
            .show(); 
         } 
        } catch(Exception e){ 
         e.printStackTrace(); 
        } 
       } 
      }; 

      LoginRequest loginRequest=new LoginRequest(userID, userPassword, responseListener); 
      RequestQueue queue= Volley.newRequestQueue(LoginActivity.this); 
      queue.add(loginRequest); 
     } 
    }); 

} 
} 

LoginRequest.java

public class LoginRequest extends StringRequest { 
    final static private String URL="http://ekb2011.cafe24.com/Login.php"; 
    private Map<String, String> parameters; 
    public LoginRequest(String userID, String userPassword, Response.Listener<String> listener){ 
     super(Method.POST, URL, listener, null); 
     parameters=new HashMap<>(); 
     parameters.put("userID", userID); 
     parameters.put("userPassword", userPassword); 

    } 
    @Override 
    public Map<String, String> getParams(){ 
     return parameters; 
    } 

} 

我怎樣才能解決這個問題呢?

+0

也許你應該嘗試改善您的實現。首先,你可以在android中使用retrofit庫。圖書館鏈接:http://square.github.io/retrofit/您可以使用谷歌gson庫來將json轉換爲數據模型。您可以創建UserModel來封裝從服務返回的用戶數據 – hkaraoglu

回答

0

更改此:

mysqli_stmt_bind_result(&statement, $userID, $userPassword, $userName); 
在此

mysqli_stmt_bind_result($statement, $userID, $userPassword, $userName); 
+1

謝謝!我必須找到這個微不足道的錯誤! –