trist06 Posté(e) le 15 février 2015 Signaler Posté(e) le 15 février 2015 Bonjour à tous, Heureux propriétaire d'une HC2 depuis 2 semaines, je bloque sur un problème de code LUA/PHP J'ai mis en place une page php sur mon synology, j'aimerais récupérer a l'aide de cette page les données poster par ma HC2. HC3 = Net.FHttp("192.168.xxx.xxx") jsonPassT = {val1 = tostring(val1), val2 = tostring(val2)} jsonPassS = json.encode(jsonPassT) response = HC3:POST("/recup/", jsonPassS) fibaro:debug('OK') Du coté de ma page web en php (présente sur mon NAS à l'url suivante 192.168.xxx.xxx/recup/) je n'arrive pas a récupérer ma chaine json depuis la variable $_POST. Merci par avance pour votre aide.
trist06 Posté(e) le 16 février 2015 Auteur Signaler Posté(e) le 16 février 2015 J'ai finalement trouvé, j'ai récupéré les données en utilisant la variable $HTTP_RAW_POST_DATA Étonné je ne trouve vraiment aucune documentation des commandes Net.FHttp, n'y a t-il vraiment aucune possibilité de déclaré une en-tête HTTP ?
Krikroff Posté(e) le 17 février 2015 Signaler Posté(e) le 17 février 2015 Non impossible de déclarer une entête avec Net.FHttp ou alors il faut utiliser mon framework LUA voir coder toi même FHttp avec TCPSocket comme j'ai fait dans le framework. Sinon en V4 il y a net.HTTPClient()
trist06 Posté(e) le 17 février 2015 Auteur Signaler Posté(e) le 17 février 2015 Sinon en V4 il y a net.HTTPClient() J'ai honte, mais je n'arrive pas àle faire fonctionner sur un virtual device, est-ce normal ? Avez vous un exemple d'une requete GET sur une page ? Est-ce natif en version 4 ? Y a t-il une documentation ? Désolé et merci pour vos réponses
Krikroff Posté(e) le 17 février 2015 Signaler Posté(e) le 17 février 2015 Voici un exemple qui récupère les devices et boucle dessus local httpClient = net.HTTPClient(); httpClient:request('http://127.0.0.1:11111/api/devices', { success = function(resp) print('At ' .. os.date() .. ' - status = ' .. resp.status) local devices = json.decode(resp.data) for i, v in pairs(devices) do print('id:' .. v.id .. ' type:' .. v.type); end end, error = function(err) print('error = ' .. err) end, options = { method = 'GET' } });
trist06 Posté(e) le 17 février 2015 Auteur Signaler Posté(e) le 17 février 2015 Super cela me permet de comprendre la syntaxe d'une requette GET. Comment peut on obtenir une documentation sur net.HTTPclient() ? Comment peut on modifier ajouter un header html personnalisé ? Comment peut envoyer des données en POST ? Le manque de documentation n'est pas facile..pourquoi n'y a t-il pas ?
trist06 Posté(e) le 18 février 2015 Auteur Signaler Posté(e) le 18 février 2015 Voici ce que j'ai pu trouver. Je vais je pense pouvoir me débrouiller avec ca : request(url, options, succes, error) overview: Sends http request to server. params: url: type: string discution: Url of the the server. options: type: array discution: Array(key => value) with pairs (headers => value, data => value, method => vale, timeout => value). succes: type: callback function discution:Called after a successful connection. error: type: callback function discution:Called after a faild connection.
trist06 Posté(e) le 19 février 2015 Auteur Signaler Posté(e) le 19 février 2015 httpClient:request('http://MONURL', { success = function(resp) local val1 = json.decode(resp.data) fibaro:setGlobal('data', val1.result.success) fibaro:debug('Valeur dans la requette :' ..val1.result.success ) end, error = function (err) print('Erreur de requête HTTP :'..err) end, options = { method = 'GET' } }); fibaro:debug('Global :'..fibaro:getGlobalValue('data')) J'ai un petit soucis dans ce code, le debug de la fonction success semble être exécuté après le debug qui affiche la variable globale, je ne comprend pas pourquoi.. Avez-vous une idée ?
Messages recommandés