Aller au contenu
DoR.Technique

Traiter Reponse Requete HTTP

Recommended Posts

Bonjour,

je travaille sur la gestion de mon arrosage et j'ai besoin d'un coup de main pour comprendre comment traiter les réponses d'une requête.

 

J'ai le code suivant qui envoi la requête :

local http = net.HTTPClient()

http:request("https://api.weatherbit.io/v2.0/current?lat=49.793959023472&lon=2.3656938174545&lang=fr&key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", {

    success = function(response)

        if response.status == 200 then

            fibaro:debug('OK, réponse : '.. response.data)

      else

            fibaro:debug("Erreur : status=" .. tostring(response.status))

        end

    end,

    error = function(err)

        fibaro:debug("Erreur : " .. err)

    end,

    options = {

        method = 'GET'

    }

})

 

Ce qui me donne la réponse suivante :

image.thumb.png.7ba10adcb0f1558c3714e624449d54fe.png

 

 

 

jusque la, tout va bien, mais c'est a partir de la que je sèche.:94:

  • Comment lister chaque nom de champ, avec sa valeur correspondante ?
  • Comment obtenir la valeur d'un champ en particulier ?

 

Merci de vos réponses, pour débloquer ma situation.

 

 

 

 

 

 

 

Modifié par DoR.Technique

Partager ce message


Lien à poster
Partager sur d’autres sites

 

Tu as la réponse ici.

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu dois récupérer tes datas comme ceci
response.data
Et tout ton code doit être dans succès

Envoyé de mon BLA-L29 en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

oui, j'ai bien vu, d’ailleurs mon début de code vient de la.

 

mais je comprends pas trop la structure des data, ni comment les récuperer.

Comment afficher la table et comment interroger une seule valeur?

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Justement, la partie que tu demandes se situe justement.... là où tu as enlevé les lignes utiles !

 

Exemple de boucle pour parcourir les éléments du tableau JSON récupéré :

			if response.data and response.data ~= "" then
				fibaro:debug('Retour : '.. response.data)
				local jsonTable = json.decode(response.data)
				-- Parcours de la table JSON
				local k, v
				for k, v in pairs(jsonTable) do
					fibaro:debug("key = " .. k .. " - type(v) = " .. type(v))
				end
				-- Ici la suite du code, exécuté en asynchrone, donc après la fin de l'exécution du code appelant http:request()
				-- ...
			else
				fibaro:debug("Error : empty response data")
			end

 

Tu as mis un screenshot au format image, donc je ne peux pas te copier/coller une valeur, mais il te suffit de chercher la valeur qui t'intéresse avec jsonTable.XXX

Partager ce message


Lien à poster
Partager sur d’autres sites

Désolé pour le copier/coller, mais comment faire un copier du texte ?

je ne pas copier le texte de cette fenêtre, ni de Firefox, ni ie, ni chrome.

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu as fait une capture d'écran au format image.

Pour copier du texte c'est pourtant plus simple. Il suffit de le sélectionner avec ta souris.

Partager ce message


Lien à poster
Partager sur d’autres sites

×