gpolart Posté(e) le 3 janvier 2016 Signaler Posté(e) le 3 janvier 2016 Bonjour à tous et meilleurs voeux pour cette nouvelle année, J'ai cherché un peu partout (peut-être mal) des informations sur la manière d'exécuter des requêtes HTTP depuis une scène, mais sans succès. J'ai réussi à faire des requêtes POST : local url = "http://domohub:8888/api/add_value"; local http = net.HTTPClient({timeout = 1000 }); local body = "ident="..name.."&value="..value.."&create=yes" http:request(url, { options = { method = 'POST', headers = { ["Content-Type"] = "application/x-www-form-urlencoded", ["Content-length"] = string.format("%d", body:len()) }, data = body }, success = function(p) -- Nothing to do end, error = function(err) fibaro:debug(err) end }) Mais je n'arrive pas à faire des GET et récupérer le contenu ... Je n'ai pas trouvé de doc spécifique sur ce module net.httpclient, j'ai travaillé en essais / erreurs à partir de différents tutos. J'ai vu aussi des trucs du genre : HC2 = Net.FHttp("192.168.1.23") Mais dans une scène cela donne : [ERROR] 11:41:06: line 9: attempt to index global 'Net' (a nil value) Alors que ça fonctionne dans un VD .... Avez-vous des pistes à me conseiller ? Cordialement
Bono2007 Posté(e) le 3 janvier 2016 Signaler Posté(e) le 3 janvier 2016 Net.FHttp c'est dans un VD. Normal que tu aies une erreur dans une scène. Dans une scène c'est : local http = net.HTTPClient() http:request("http://127.0.0.1:11111/api/globalVariables", { options = { method = 'POST', data = json.encode(newVar)}}) Dans un VD, un exemple pour récupérer mes températures avec un GET : local JEEDOM = Net.FHttp("192.168.0.32", 80) --TCuisine local response = JEEDOM:GET("/core/api/jeeApi.php?apikey=xnbvjfhxcuul9&type=cmd&id=2335") fibaro:setGlobal("TCuisine",response); 1
gpolart Posté(e) le 3 janvier 2016 Auteur Signaler Posté(e) le 3 janvier 2016 OK, merci, mais ce que tu réponds c'est ce que je sais faire ... :-) Mais comment fait-on un GET dans une scène, par exemple pour récupérer une valeur d'une autre box ? Ou comment récupère t-on des données d'un POST ? (en espérant que ce soit pareil pour les GET)
Bono2007 Posté(e) le 3 janvier 2016 Signaler Posté(e) le 3 janvier 2016 ceci peut t'aider ? local function updateDevice(successCallback, errorCallback, device, parameter, value) local http = net.HTTPClient() http:request('http://127.0.0.1:11111/api/plugins/callUIEvent?deviceID='..device ..'&elementName='..parameter ..'&eventType=onChanged&value=' ..value ..'', { options = { method = 'GET' }, success = successCallback, error = errorCallback }) end
gpolart Posté(e) le 4 janvier 2016 Auteur Signaler Posté(e) le 4 janvier 2016 Hello, C'est ce à quoi j'étais arrivé, mais dans ton exemple tu ne prends en compte qu'une requête d'envoi de valeur (ce qui devrait être un POST en toute logique, mais c'est un autre sujet). Pour net.HTTPClient, la fonction successCallback reçoit un paramètre qui est la réponse. On peut tester le code HTTP dans l'attribut status mais je ne connais pas l'attribut qui contient les données. Par exemple, si je veux récupérer des infos d'une IPX800, je fais un GET sur http://mon_@ip/api/xdevices.json?cmd=40 et cela me retourne un objet JSON à parser. Comment accéder à cet objet pour, par exemple, ventiler les données dans diverses variables ou VD ?
gpolart Posté(e) le 4 janvier 2016 Auteur Signaler Posté(e) le 4 janvier 2016 Bonjour, C'est bon, j'ai trouvé, c'est p.data comme dans l'extrait ci-dessous : http:request(url, { options = { method = 'GET' }, success = function(p) fibaro:debug(p.status) fibaro:debug(p.data) end, error = function(err) fibaro:debug(err) end }) Merci ! (comment note t-on le sujet en résolu ?) 1
jjacques68 Posté(e) le 1 septembre 2016 Signaler Posté(e) le 1 septembre 2016 Hello, je galère avec ces requêtes https, vous avez un lien qui explique les syntaxes, paramètres, j'ai ouvert un compte chez fibaro developper, ça aide un peu mais pas pour les syntaxes ? Ça veut dire quoi le .data ou .status ?
Messages recommandés