Overdrive Posté(e) le 19 avril 2020 Signaler Posté(e) le 19 avril 2020 Bonjour a tous, j’essaye de créer un bouton lecture pour mon lecture squeezbox. Malheureusement ça marche pas. Voici le code ; function QuickApp:setValue(Value) self:debug("Lecture ok") self:updateProperty("value", false) local http = net.HTTPClient() http:request("http://login:pass@172.20.254.250:9002/status_header.html?p0=play&player=cc%3Acc%3Acf%3A10%3A61%3A81", { options = { headers = { ["content-type"] = "application/json;charset=UTF-8", ["Authorization"] = "Basic pwd=", ["Cache-Control"] = "no-cache, no-store", ["X-Fibaro-Version"] = "2" }, method = "GET" }, }) end function QuickApp:uibtnlectureReleased(event) self:setValue(Value) end
jjacques68 Posté(e) le 19 avril 2020 Signaler Posté(e) le 19 avril 2020 (modifié) Je pense que le login:pass dans l'adresse est en trop, il faut le mettre dans le ["Authorization"] = "Basic ...", encodé en base64. EDIT : ou enlever la ligne avec le laisser dans l'URL... ["Authorization"] = "Basic pwd=", il serait bien de récupérer le retour de la commande avec un success = function(response)... et error = function(err)... et d'afficher ce retour ! afin de savoir ce qu'il ne marche pas... Modifié le 19 avril 2020 par jjacques68
Overdrive Posté(e) le 19 avril 2020 Auteur Signaler Posté(e) le 19 avril 2020 Merci de ton aide, j'ai rajouter ; function QuickApp:setValue(Value) self:debug("Lecture ok") self:updateProperty("value", false) local http = net.HTTPClient() http:request("http://login:pass@172.20.254.250:9002/status_header.html?p0=play&player=cc%3Acc%3Acf%3A10%3A61%3A81", { options = { headers = { ["content-type"] = "application/json;charset=UTF-8", ["Authorization"] = "Basic pwd=", ["Cache-Control"] = "no-cache, no-store", ["X-Fibaro-Version"] = "2" }, method = "GET" }, success = function(response) self:debug("response status:", response.status) self:debug("headers:", response.headers["Content-Type"]) local data = json.decode(response.data) if data.contents and data.contents.quotes and data.contents.quotes[1] then local quote = data.contents.quotes[1].quote self:debug(quote) self:updateView("label", "text", quote) end end, error = function(error) self:debug('error: ' .. json.encode(error)) end }) end function QuickApp:uibtnlectureReleased(event) self:setValue(Value) end Le retour me donne ; [QUICKAPP115]: Lecture ok[19.04.2020] [10:36:20] [DEBUG] [QUICKAPP115]: response status: 401[19.04.2020] [10:36:20] [DEBUG] [QUICKAPP115]: headers: text/html[19.04.2020] [10:36:20] [ERROR] [QUICKAPP115]: QuickApp crashed[19.04.2020] [10:36:20] [ERROR] [QUICKAPP115]: /usr/share/lua/5.3/json/decode/util.lua:35: unexpected character @ character: 1 0:1 [<] line:
jjacques68 Posté(e) le 19 avril 2020 Signaler Posté(e) le 19 avril 2020 pense à utiliser le bouton "</>" de l'éditeur du forum quand tu postes du code... c'est plus lisible... je mettrais que ça dans les fonctions : le reste te cause les "ERROR" dans le debug... success = function(response) self:debug("response status:", response.status) end, error = function(error) self:debug('error: ' .. json.encode(error)) end et on peut déjà voir que le status est 401 ! donc problème d'authentification ! utilise la balise "Authorization" du Header !! et enlève les info d'authentification de l'URL. headers = { ["content-type"] = "application/json;charset=UTF-8", ["Authorization"] = "Basic ton_login:ton_mot_de_passe_en_base_64", ["Cache-Control"] = "no-cache, no-store", ["X-Fibaro-Version"] = "2" },
Overdrive Posté(e) le 19 avril 2020 Auteur Signaler Posté(e) le 19 avril 2020 Apparemment c'est le login et pass qui marche pas je sais pas comment faire
jjacques68 Posté(e) le 19 avril 2020 Signaler Posté(e) le 19 avril 2020 tu vas sur le site : https://www.base64encode.org/ tu choisis "encode" et tu saisis ton user:mot de passe tu cliques sur le bouton "encode". tu récupères la chaine qu'il t'a créé et tu la colle dans : à la place des xxxxxxx ["Authorization"] = "Basic xxxxxxxx",
Overdrive Posté(e) le 19 avril 2020 Auteur Signaler Posté(e) le 19 avril 2020 Alors du coup, j'ai mis j'ai essayer mais moi j'ai login:pass@ Je l'encode comme ça direct ou j’enlève le : et @
jjacques68 Posté(e) le 19 avril 2020 Signaler Posté(e) le 19 avril 2020 tu enlève juste le "@" tu gardes les ":" n'oublies pas de supprimer dans l'URL aussi : elle doit ressembler à ça : http:request("http://172.20.254.250:9002/status_header.html?p0=play&player=cc%3Acc%3Acf%3A10%3A61%3A81", {
Overdrive Posté(e) le 19 avril 2020 Auteur Signaler Posté(e) le 19 avril 2020 M'en mettant login:pass le code : "<response status: 200/>"
Overdrive Posté(e) le 19 avril 2020 Auteur Signaler Posté(e) le 19 avril 2020 Ok c'est bon tous marche merci encore a toi GÉNIAL !!!!!!!!!!!!!! 1
Messages recommandés