Aller au contenu
a031864

HC3 ne prends pas en compte les variable dans une API request

Recommended Posts

Bonjour

Je cherche à faire une API request de mon HC3 vers un IPX800 et je rencontre un problème dans le support de la variable dans l'url.

Dans mon code source, je demande un requête sur mon IPX800 en précisant la variable cmd avec une valeur égale à 10 -"http://IPX800/api/xdevices.json?cmd=10"

La scene est validé mais le résultat correspond à l'url globale - "http://IP/api/xdevices.json"  --> {"product":"IPX800_V3"}

La variable commande n'est pas prise en compte. J'ai confirmé ce point en faisant une capture réseau de la requête HTTP.

Savez-vous comment surporter des variables dans l'url d'une API ? 

Ce script fonctionné correctement avec mon HC2.

 

Code déployé sur le HC3

function HTTPRequest()
    local http = net.HTTPClient()
    http:request("http://IPX800/api/xdevices.json?cmd=10", {
        options = {
            method = "GET",
            headers = {
                ["content-type"] = "application/json;charset=UTF-8",
                ["Cache-Control"] = "no-cache, no-store",                
                ["X-Fibaro-Version"] = "2"
            },
        },
        success = function(response)
            if (response.status == 200) then
                fibaro.trace("Cuve Eau-Niveau",url.."....> "..tostring(response.data))
            else
                fibaro.debug("Wrong status '"..response.status.."' in response!")
            end
        end,
        error = function(message)
            fibaro.debug("Connection error: " .. message)
        end
    })
end

netHTTPCLient.txt

Modifié par a031864

Partager ce message


Lien à poster
Partager sur d’autres sites

voila ce que j'utililse pour mon ecodevice RT2

 

function QuickApp:GetRT2(action)
    local address = self.IPEDRT2.."/api/xdevices.json?key="..self.KeyAPI.."&"..action
    self.httpClient:request(address, {
        options={
            checkCertificate = true,
            method = 'GET'
        },
        success = function(response)
            data = json.decode(response.data)
            if data.status == "Success" then
               self:trace("Success")
            end
        end,
        error = function(error)
            self:debug('error: ' .. json.encode(error))
        end
    }) 
end 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci pour ta réponse. La requete fonctionne maintenant dans une QuickApp mais pas dans une scene.

Partager ce message


Lien à poster
Partager sur d’autres sites

La syntaxe est un peu différente dans une scène

Envoyé de mon BLA-L29 en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

Binjour, également concerné par ce phénomène: avez-vous obtenu une solution pour votre SCENE?

Partager ce message


Lien à poster
Partager sur d’autres sites

×