2017-10-08 4 views
0

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(); 
} 

}

Répondre

0
try { 
        JSONObject jsonObject = new JSONObject(response); 
        Toast.makeText(getApplicationContext(),jsonObject.getString("message"),Toast.LENGTH_LONG).show(); 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 

D'abord, vous devriez vérifier la réponse. pouvez-vous s'il vous plaît partager le code de php dans le fichier registre après avoir enregistré le fichier etc nom d'utilisateur, vous devez imprimer une réponse là-bas et vous obtiendrez cette réponse dans volley

$ sql = « INSERT INTO nom_table (nom d'utilisateur, mot de passe, e-mail) VALEURS ('$ username', '$ password', '$ email') ";

après avoir modifié le code de vérifier la réponse, alors vous obtenez enregistré avec succès si la java comparer réponse alors du pain grillé

+0

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 –

0

Je ne sais pas vous avez fait cela ou non, essayez comme suit

Essayez de définir un tableau vide en premier lieu comme suit:

$response = array(); <--add this line,create an empty array 1st..then only can echo out 

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);