Bonjour ,
J 'ai besoin d'un peu d aide si quelqu'un a une idée merci d avance
je développe une application sous ANDROID / IONIC . ANGULAR
J'ai dans mon controleur une fonction qui fait un POST sur une API REST
tout fonctionne bien en mode WEB ; ionic serve
maintenant en mode EMULATION " IONIC EMULATE ANDROID -- LIVELOAD ca ne fonctionne pas , j 'ai une erreur -1.
.controller('signupCtrl', function($scope, $http, $ionicPopup, $state, $ionicHistory) {
var headers = {
'Access-Control-Allow-Origin' : '*',
'Access-Control-Allow-Methods' : 'POST, GET,PUT, OPTIONS',
'Accept': 'application/json',
"Access-Control-Allow-Headers": "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With",
"Content-Type" : "application/x-www-form-urlencoded; charset=UTF-8"
};
$scope.signup = function(data){
var link = 'http://127.0.0.1/wserv/signup.php';
console.log('start');
var port = $http.post(link, {n : data.name, un : data.username, ps : data.password , ph: data.phone , add : data.address , pin : data.pincode },headers)
.then(function(response) {
$scope.gists = response.data;
alert('ok');alert(response.data);
})
.catch(function(response) {
console.error('Gists error', response.status, response.data);
})
.finally(function() {
console.log("finally finished gists");
});
};
})
API REST PHP
<?php
if (isset($_SERVER['HTTP_ORIGIN'])) {
header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400'); // cache for 1 day
}
// Access-Control headers are received during OPTIONS requests
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");
exit(0);
}
$postdata = file_get_contents("php://input");
if (isset($postdata)) {
$request = json_decode($postdata);
$name=$request->n;
$username=$request->un;
$password=$request->ps;
$password=md5($password);
$phone=$request->ph;
$address=$request->add;
$pincode=$request->pin;
$conn = new mysqli("localhost", "root", "", "wserv");
// To protect MySQL injection for Security purpose
$name = stripslashes($name);
$username = stripslashes($username);
$password = stripslashes($password);
$phone = stripslashes($phone);
$address = stripslashes($address);
$pincode = stripslashes($pincode);
$name = $conn->real_escape_string($name);
$username = $conn->real_escape_string($username);
$password = $conn->real_escape_string($password);
$phone = $conn->real_escape_string($phone);
$address = $conn->real_escape_string($address);
$pincode = $conn->real_escape_string($pincode);
$check="SELECT count(*) FROM users WHERE u_id = '$username'";
$rs = mysqli_query($conn,$check);
$data = mysqli_fetch_array($rs, MYSQLI_NUM);
//print_r($data);
if($data[0] > 0) {
$outp='{"result":{"created": "0" , "exists": "1" } }';
}
else{
$sql = "INSERT INTO users VALUES ('$name', '$username', '$password', '$phone','$address' ,'$pincode',1 )";
if ($conn->query($sql) === TRUE) {
$outp='{"result":{"created": "1", "exists": "0" } }';
}
}
echo $outp;
$conn->close();
}
?>
Je souterais savoir pourquoi sous emulateur ca ne repond pas
...si quelqu'un a une idée merci
Salut,
Le soucis c'est que tu fais une requête au serveur sur l'adresse http://127.0.0.1/ c'est donc localhost. Or Vu que tu es sur ton téléphone le localhost
c'est l'ip de ton téléphone. Du coup quand tu fais la requête http://127.0.0.1/ depuis ton Android tu fais appel au server local de ton téléphone.
Il te faut mettre l'adresse IP de ta machine du genre 192.168.X.X en faisant
//pour windows
ipconfig
// mac , linux
ifconfig
À la suite de la commande tu retrouveras ton adresse IP.
Merci beaucoup , du coup tout fonctionne , c'était tout à fait ça.
Merci pour ton coup de main , t super .
Guillaume.