file_get_contents(PHP),pour traiter une réponse JSON d'1 IPX

Bonjour,

Ma config:
Sur mon réseau LAN, j’ai un serveur LAN (tout fait à base linux) : http://www.wut.de/e-50504-ww-daus-000.php,
et un IPX800_V3 … que tout le monde connait !! : -)))

Je cherche à traiter en PHP, une réponse au format JSON de l’IPX ; réponse à la requte HTTP :
http://192.168.x.xxx/api/xdevices.json?cmd=10 ou 20 ou 30 ou 40…

Sur les forums de PHP, j’ai trouvé les 3 lignes de code PHP suivant (qui fonctionnent à merveille):
$json = file_get_contents(« Reponse_COMMUNS_AN.json »);
$obj = json_decode($json);
print $obj->{‹ AN5 ›};

Ceci est pour obtenir le contenu d’un fichier local, à la racine du serveur LAN.

La fonction « file_get_contents() » en PHP, permet d’ouvrir autant des ‹ URL ›, que des path locaux « —.json ».

Le problème, c’est que cela ne marche pas, et étant moi même développeur amateur, et collègue de professionels développeurs en PHP,
mes collègues me disent à l’unison que cela vient de l’IPX800_V3, et la facon dont il traite la requête http et comment il renvoie le flux JSON en retour …
Si la mise en context durant le développement du code PHP est requise pour la fonction file_get_contents() http://php.net/manual/fr/context.http.php, prière de communiquer les options et leur valeurs respectives …
(depuis 6 semianes que je bloque sur le sujet, je reste convaincu que c’est la solution au problème …)

Est ce que quelqu’un à déjà eu ce genre de problème, ou bien au sein de GCE, pourriez vous SVP me donner les 3-4 lignes de codes PHP pour mettre en variable STRING PHP, le contenu de la page JSON répondue (réponse JSON) ? … pour que je puisse ensuite la traiter … enregistrement dans fichier et détermination conditionnelle d’actions à porter …

PS:
J’ai essayé aussi la fonction cURL() … avec tout ses bons paramètres et options codées par ligne …, mais la lecture est vierge … (return = NULL)!

Vraiment 1 million de fois merci par avance pour votre aide très précieuse !
:slight_smile:
Bien cordialement et au plaisir de vous lire tous,
Christophe

Bonjour,

En fait nous avons eu le même problème pour faire communiquer la V3 avec la futur V4 via json.
La requête est rejeté par l’IPX800 v3 en raison du cross domain policy.
On à donc fait une correction pour que le serveur de la v3 contourne cette limitation.

Vous trouverez en PJ la version que nous utilisons pour nos tests json

IPX800_3.05.60.rar (512 KB)

Oh YES!!! Super :slight_smile:
Quand est ce que la version du firmware 3.05.60 sera officiellement dispo au téléchargements ?
Est ce que l’attachement est déjà en version (officielle) intégrale (de la 3.05.60) ?

Bonjour,

Si cela peut aider voir un bout de code en php que j’utilise chez moi pour récupérer les valeurs du fichier json

<?php
$url_inputs = "http://$_IPX800/api/xdevices.json?cmd=10";
$username = "username";
$password = "password";
$context = stream_context_create(array(
'http' => array('header'  => "Authorization: Basic " . base64_encode("$username:$password"))));
$data = file_get_contents($url_inputs, false, $context);
$feed = json_decode($data);
$val1=$feed->{'IN1'};
$val2=$feed->{'IN2'};
$val3=$feed->{'IN3'};
$val4=$feed->{'IN4'};
?>

=> ça fonctionne nickel !!

Oh yes!
Jusqu’alors, j’étais obligé de dévalider dans l’IPX le loggin et mot de passe.
En effet, en donnant le context à la fonction « file_get_contents », ça peut passer…!

Je vais essayer ça très vite !
Thanks very very much!!!
Christophe