Aller au contenu
jjacques68

retour d'une http:request() peu commun

Recommended Posts

Hello tout le monde, j'espère que vous allez bien ! :) 

 

Je rencontre un soucis avec une http:request() avec PushBullet.

 

Depuis quelques temps (semaines), la réponse à la requête http semble avoir changée.

 

avant je faisais ceci pour tester le retour

success = function(response)

	if response.status == 200 then
		...
	else
		self:error("error "..response.status)                    
	end

end

et maintenant j'ai une erreur

error 1

response.status semble être à 1 et plus à 200 :blink:

 

si je fais un debug de response.data, j'ai ceci

HTTP/1.1 200 Content-Type: application/json; charset=utf-8 X-RateLimit-Limit: 131072 X-RateLimit-Remaining: 130794 X-RateLimit-Reset: 1690014525 Content-Length: 2153 Date: Sat, 22 Jul 2023 07:44:00 GMT Via: 1.1 google Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Connection: close {"accounts":[],"blocks":[],"channels":[],"chats":[],"clients":[],"contacts":[],"devices":[{ici les données qui m'intéressent}],"grants":[],"pushes":[],"profiles":[],"subscriptions":[],"texts":[]}

on le voit le status 200 au début de la chaine de caractère.

 

J'ai pas d'autres rubriques dans la réponse, que status et data.

 

Mais c'est quoi ce type de status, "1" ?

on a "0" si y a une erreur ?

 

Donc je contourne le test de ce status avec

if string.find(response.data, "HTTP/1.1 200") > 0 then

mais c'est un peu pourri non !!!?

 

merci pour vos lumières !!

 

EDIT : 

 

en fait la réponse est clairement inexploitable, je cherche justement à utiliser la rubrique "devices" du json, mais comme il est noyer dans cette chaine de caractères, je peux rien en faire...

une idée ?

 

Modifié par jjacques68

Partager ce message


Lien à poster
Partager sur d’autres sites

C'est très étrange... je ne pense pas avoir jamais vu ça.

Tu es en firmware stable ou beta ?

Ouvre peut être un dossier auprès du support Fibaro, ça ressemble à un gros bug dans la fonction http:request()

Partager ce message


Lien à poster
Partager sur d’autres sites

alors j'avais pas pensé à ce que ça provienne de la HC3 !

J'étais plutôt parti sur une modif de PushBullet...

 

Suis toujours en version 5.140.17, j'ai pas fait la dernière update.

 

j'ai contourné le problème en faisant un string.sub() du json, puis en l'exploitant comme il se doit, mais c'est null comme méthode !

 

je vais poster sur le forum officiel, on verra...

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu dits que la variable response de la fonction de callback success() est malformée, puisque c'est normalement une table qui contient les 3 variables suivantes : status, data, et headers

 

Vu que status ne contient pas la valeur attendue, c'est donc un bug de cette fonction mise à disposition par la box Fibaro.

 

Si le bug venait du site Web en face, le status serait correct (ou contiendrait une autre valeur que 200, mais sous forme de code HTTP valide : 404, etc), et ce serait la variable data qui serait mal formée.

Partager ce message


Lien à poster
Partager sur d’autres sites

ah oui il y a le headers encore !!

oui donc ça vient de fibaro...

je comprends bien, en effet.

 

merci !!

 

suis entrain d'écrire sur le forum officiel

Partager ce message


Lien à poster
Partager sur d’autres sites

Par contre, ce qui est bien possible, c'est que ça soit la réponse du site Web qui fasse bugger ladite fonction... mais nous n'avons pas les moyens de débugguer ce qui se passe dans les librairies LUA mises à disposition par Fibaro.

 

A noter qu'entre les QA et les Scènes ce n'est pas la même version de LUA... si tu es motivé ça vaut le coup de tester si le comportement est identique.

Partager ce message


Lien à poster
Partager sur d’autres sites

ça vaut le coup d'essayer, je testerai, mais pas maintenant...

 

Sur le forum officiel , y a un endroit spécifique pour poster ce genre de chose, ou je le mets simplement dans la rubrique HC3 ?

Partager ce message


Lien à poster
Partager sur d’autres sites

×