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.

Ce que je fais

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

}

?>

Ce que je veux

Je souterais savoir pourquoi sous emulateur ca ne repond pas

...si quelqu'un a une idée merci

4 réponses


workfel
Réponse acceptée

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.

gseverin
Auteur
Réponse acceptée

Merci beaucoup , du coup tout fonctionne , c'était tout à fait ça.
Merci pour ton coup de main , t super .
Guillaume.

Defy
Réponse acceptée

n'hesite pas à fermer de sujet en mettant la reponse en resolu ;-)

gseverin
Auteur
Réponse acceptée

tout à fait merci Defy ..... bon week à vous