Aller au contenu

Méthode POST dans VD avec content-type


Messages recommandés

Posté(e)

Bonjour,

 

J'ai un souci de communication entre ma HC2 et un automate qui contrôle notre local technique. Les équipements communiquent grâce à leur API respectives. Pour contrôler l'automate, j'ai besoin de faire un POST. J'ai fait un test avec un VD, le seul problème est que le message ne passe pas car il faut renseigner le content-type dans la commande à envoyer à l'automate pour que cela fonctionne. Hors dans un VD, j'ai utilisé comme test le code suivant (suivant API de l'automate):

 

local ECLYPSE = Net.FHttp("xxx.xxx.x.xx",xx)
ECLYPSE:setBasicAuthentication("xxxx", "xxxxx")

local var_t='{"encode": "text","propertyReferences":[{"type": "analogValue","instance": 1,"property": "presentValue","value": "20"}]}'
fibaro:debug(var_t)

local response, status, errorCode = ECLYPSE:POST("/api/rest/v1/protocols/bacnet/local/objects/write-property-multiple",var_t)

            fibaro:debug("Diagnostic : "..response)
            fibaro:debug("Status : "..tonumber(status or 0))

 

Par contre, je ne sais pas où je peux renseigner le content-type qui doit être content-type:application/json.

 

Je ne suis pas un informaticien chevronné, si quelqu'un peut me renseigner cela pourrait m'aider grandement.

 

Cordialement,

 

Maxime LEBECH
           

Posté(e)

Bonjour,

 

J'ai peur que cela ne soit pas possible avec net.FHttp dans un VD, il va falloir, enfin je crois,  passer par une scene et utiliser la fonction net.HTTPClient dans laquelle tu pourras mettre ton Header .

Sinon as tu essaye de le mettre dans ta ligne ECLIPSE:POST...

 

 

Posté(e)

Bonjour,

 

Merci pour ton retour, je vais essayer ta deuxième proposition mais sans trop de de garantie, pour le net.HTTPClient, estc-e qu'il y a des tutos qui existent pour la mettre en application?

Posté(e)

Bonjour,

 

voila un exemple, il y en a beaucoup sur le forum

 

--[[
%% properties
%% events
%% globals
--]]
     
-- Message Descriptif du Backup
local descriptif = 'Backup du '..os.date("%d/%m/%y - %HH%M")

-- Password admin encodé en base64
local password = 'aWRpb3RAZ3Z1bGF2aWVyZ2UuY29tOnR1X3lfY3JveWFpc19oZWlu'

local url = 'http://127.0.0.1/api/service/backups'
local datas = '{"action":"create","params":{"name":"'..descriptif..'"}}'


local httpClient = net.HTTPClient()
httpClient:request(url , {
		success = function(response)
					if tonumber(response.status) == 201 or tonumber(response.status) == 202then
						print("Backup Created at " .. os.date())
						
                    else
						print("Error " .. response.status)						
                    end
                end,
        error = function(err)
					print('error = ' .. err)
                end,
        options = {
				method = 'POST',
                headers = { 
						["content-type"] = 'application/json',
						["Authorization"] = 'Basic '..password
                          },
                data = datas
			}
});
  • Upvote 2
×
×
  • Créer...