-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;
}
}
我怎樣才能解決這個問題呢?
也許你應該嘗試改善您的實現。首先,你可以在android中使用retrofit庫。圖書館鏈接:http://square.github.io/retrofit/您可以使用谷歌gson庫來將json轉換爲數據模型。您可以創建UserModel來封裝從服務返回的用戶數據 – hkaraoglu