Aller au contenu

Lua/php


trist06

Messages recommandés

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.

Lien vers le commentaire
Partager sur d’autres sites

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 ?

Lien vers le commentaire
Partager sur d’autres sites

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()

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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'
    }
});

;)

Lien vers le commentaire
Partager sur d’autres sites

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 ?

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

    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 ?

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...