J'essaye de créer une page d'inscription simple qui transmet le nom d'utilisateur, l'email, et le mot de passe au côté de php. J'ai vérifié mon code php avec un client REST (facteur) et cela fonctionne très bien. mais quand j'essaye de passer les params d'android en utilisant volée, la réponse dans onResponse renvoie une valeur nulle. voici le code:réponse de volée renvoie une valeur nulle
Php:
DbOperations.php
<?php
class DbOperations{
private $con;
require_once dirname(__FILE__).'/DbConnect.php';
$db = new DbConnect();
$this->con = $db->connect();
}
function createUser($username,$pass,$email){
$password = md5($pass);
$stmt = $this->con->prepare("INSERT INTO `android`.`users` (`id`, `username`, `password`, `email`) VALUES (NULL, ?, ?, ?);");
$stmt->bind_param("sss",$username,$password,$email);
if($stmt->execute()){
return true;
}else{
return false;
}
}
}
registerUser.php
<?php
if
(isset($_POST['username']) and
isset($_POST['password']) and
isset($_POST['email'])
){
$db = new DbOperations();
if($db->createUser(
$_POST['username'],
$_POST['password'],
$_POST['email']
)){
$response['error'] = "false"; $response['message'] = "user register success";
}else{
$response['error'] = "true";
$response['message'] = "user register failed";
}
}else{
$response['error'] = true;
$response['message'] = "Required fields are missing";
}
}else{
$response['error'] = true;
$response['message'] = "invalid post request";
}
echo json_encode($response);
Android:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private EditText etUsername,etEmail,etPassword;
private Button bt;
private ProgressDialog progressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etEmail=(EditText)findViewById(R.id.et_email);
etUsername=(EditText)findViewById(R.id.et_username);
etPassword=(EditText)findViewById(R.id.et_pasword);
bt=(Button)findViewById(R.id.bt);
progressDialog =new ProgressDialog(this);
bt.setOnClickListener(this);
}
private void registerUser(){
final String email=etEmail.getText().toString().trim();
final String username=etUsername.getText().toString().trim();
final String password=etPassword.getText().toString().trim();
progressDialog.setMessage("Registering..");
progressDialog.show();
StringRequest stringRequest = new StringRequest(Request.Method.POST,
Constants.URL_REGISTER,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
progressDialog.dismiss();
try {
JSONObject jsonObject = new JSONObject(response);
Toast.makeText(getApplicationContext(),jsonObject.getString("message"),Toast.LENGTH_LONG).show();
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
progressDialog.hide();
Toast.makeText(getApplicationContext(),error.getMessage(),Toast.LENGTH_LONG).show();
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> params=new HashMap<>();
params.put("username",username);
params.put("email",email);
params.put("password",password);
return params;
}
};
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
@Override
public void onClick(View v) {
if (v==bt)
registerUser();
}
}
J'ai vérifié le code php en utilisant postman.it fonctionne très bien (le json renvoie la clé de message). S'il vous plaît vérifier la question.J'ai ajouté le code PHP aussi –