Я создаю приложение, подключенное к базе данных MYSQL, где пользователь может войти или зарегистрироваться. В классе регистрации я использую OKHTTP3, чтобы зарегистрировать нового пользователя. OKHTTP3 делает запрос к странице php, которая выполняет запрос. Ответ страницы всегда одинаков (код: 200, сообщение: «пусто»). Я хотел бы настроить ответ php-страницы, такой как код и сообщение, чтобы я мог знать, была ли регистрация успешной или нет. Как мне это сделать?
Как можно проще, пожалуйста.
Мой запрос OKHTTP3:
String reg_name = username.getText().toString();
String reg_pass = password.getText().toString();
String reg_url = "https://collectcards.000webhostapp.com/register.php";
OkHttpClient client = new OkHttpClient();
RequestBody formBody = new FormBody.Builder()
.add("user_name", reg_name)
.add("user_pass", reg_pass)
.build();
Request request = new Request.Builder()
.url(reg_url)
.post(formBody)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
// Request failed
}
@Override
public void onResponse(Call call, Response response) throws IOException {
// Handle whatever comes back from the server
String res = response.message(); //MESSAGE IS ALWAYS EMPTY, COSE IS ALWAYS 200
if(res.equals("OK")) { //ID LIKE TO CUSTOM THE MESSAGGE TO SAY OK WHEN IT GOES WELL AND NOTOK WHEN IT FAIL
ok = true;
risposta = "Registrazione Avvenuta";
}else {
risposta = "Registrazione Fallita";
ok = false;
}
mHandler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(thisContext, risposta, Toast.LENGTH_LONG).show();
if (ok) {
Intent myIntent = new Intent(thisContext, mainMenuActivity.class);
thisContext.startActivity(myIntent);
}else{
password.setText("");
username.setText("");
}
}
});}
});
Моя страница php:
<?php
$connessione = mysqli_connect("localhost", "usr", "psw", "db");
$user_name = $_POST['user_name'];
$user_pass = $_POST['user_pass'];
$query = "INSERT INTO `player` (`username`, `password`, `money`) VALUES ('".$user_name."', '".$user_pass."', '100');";
$risultato = mysqli_query($connessione, $query);
if($risultato){
//CUSTOM MESSAGGE
}else{
}
?>
Вы можете установить выводимый код с помощью http_response_code();
Например:
http_response_code(500);
в случае ошибки сервера, 400 для плохого запроса и т. д. Для тела вы должны просто иметь возможность echo
это прямо там, в теле. Я бы порекомендовал сделать что-то вроде json_encode()
‘массив данных.
И, пожалуйста, не используйте закрывающие теги PHP.
Других решений пока нет …