Bonjour à tous,
J'ai créé une API pour qu'un utilisateur puisse s'authentifier depuis un site internet et depuis une application pour iOS/Android.
J'arrive à faire l'opération mais cela ne fonctionne soit
1. sur l'application web => OK. L'IOS =>KO
2. sur l'application web => KO. L'IOS =>OK
Cas 1;
Pour que mon application web fonctionne, je récupère les données ainsi
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 (isset($_POST['email']) && !empty($_POST['email']) ) ? $email = strip_tags($connect->real_escape_string($_POST['email'])) : $email = "none"; (isset($_POST['pwd']) && !empty($_POST['pwd'])) ? $pwd = strip_tags($connect->real_escape_string($_POST['pwd'])) : $pwd = "none";
mais mon application IOS/Android qui fait apelle à la meme API, n'arrive pas à récupérer $_POST['email']
Si je mets mon $_POST dans
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part echo json_encode($_POST);
Il m'affiche ceci (il semble que les \ me cause le problème. mais d'ou viennent-il?)
Dans mon App IOS/ANdroid, je fais ma requete avec FtechQuery{"{"email":"demo@domaine_ch","pwd":"demo"}": ""}
Code typescript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 const getUser = async (email:string, pwd:string) => { console.log("user:", email); console.log("pwd:", pwd); setIsLoading(true) try { const response = await fetch('https://api.domaine.ch/getUser.inc.php', { method: 'POST', headers:{ accept: 'application/json', Authorisation: 'key', }, body: JSON.stringify({ email: email, pwd: pwd }), }); if(!response.ok){ //console.log("[res]" + res) throw new Error('[fetchQueryUser] Failed to fetch the API (check the path)') } const json = await response.json(); console.log(json) setUser(json); }catch(err){ console.error('[fetchQueryUser] Check parameters passed in body' + err); } finally { setIsLoading(false); } };
Cas 2:
Si maintenant dans mon API, je commente et j'ajoute ces ligne
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 $encodedData = file_get_contents('php://input'); // take data from react native fetch API $decodedData = json_decode($encodedData, true); $email = $decodedData['email']; $pwd = $decodedData['pwd']; /* (isset($_POST['email']) && !empty($_POST['email']) ) ? $email = strip_tags($connect->real_escape_string($_POST['email'])) : $email = "none"; (isset($_POST['pwd']) && !empty($_POST['pwd'])) ? $pwd = strip_tags($connect->real_escape_string($_POST['pwd'])) : $pwd = "none"; */
Nikel chrome, mon App IOS/Android fonction, mais c'est mon application web qui bug!!!!
Mon application fait la question ainsi
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 <?php // https://solutions.posit.co/connections/clients/php/#php-example function callApi($url, $key, $params){ $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_HTTPHEADER, array( "Authorization: Key " . $key )); curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($params)); $result = curl_exec($curl); curl_close($curl); return json_decode($result); } ?>
Il y a un mode de fonctionnement dans l'envoi qui diffère, mais je n'arrive pas à voir comment.
Idéalement, si je vous me le recommander asssi, j'aimerais continuer acec
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $encodedData = file_get_contents('php://input'); // take data from react native fetch API $decodedData = json_decode($encodedData, true); $email = $decodedData['email']; $pwd = $decodedData['pwd'];
Je me demande s'il m'y a pas un problème avec le decodage de json....
Merci
Edit:
par contre je viens de voir un truc de bizard, juste avant l'envoi de ce poste : demo@domaine_ch. Je vais voir d'ou vient ce _, car j'ai bien saisi un .![]()





Répondre avec citation




Partager