Aller au contenu

Messages recommandés

Posté(e)

Hello tout le monde,

 

J'espère que vous allez bien !

 

j'essaye de convertir une requête http (testée et fonctionnelle avec Postman), dans un QuickApp.

Sans résultats :(

Incapable de dire pourquoi...

 

ci-joint une capture de ce que je fais avec Postman : 

 

image.png.954454f5fefbab3ecad6f568273733c8.png

 

et les Headers : 

 

image.png.6bab95111bb0e60a6b0c210f5e284e24.png

 

Postman me permet d'afficher l'équivalent en HTTP : 

 

POST /api.cgi?cmd=Login HTTP/1.1
Host: 192.168.3.24
Content-Type: application/json
Content-Length: 120

[
{
"cmd":"Login",
"param":{
"User":{
"Version": "0",
"userName":"admin",
"password":"xxxxxxxxxxxxxx"
}
}
}
]

 

 

et voilà ce que j'essaye de faire dans le QA :

 

local http = net.HTTPClient({timeout=3000})

    http:request("http://192.168.3.24/api.cgi?cmd=Login", {
        options={
                method = 'POST',
                headers = {
                    ["Content-Type"] = "application/json",
                    ["Content-Length"] = "120",
                    ["Host"] = "192.168.3.24"
                },
                data=json.encode({
                        ["cmd"]="Login",
                        ["param"]={
                            ["User"]={
                                ["Version"]="0",
                                ["userName"]="admin",
                                ["password"]="xxxxxxxxxxxxxx"
                            }
                        }
                        })
                --]]
        },                
        success = function(response) self:debug(json.encode(response)) end,
        error = function(error) self:error(json.encode(error)) end
    })

 

la réponse est la suivante :

 

{"headers":{"Date":"Wed, 28 May 2025 16:30:06 GMT","Content-Length":"166","Connection":"close","Content-Type":"text\/html"},"data":"","status":400}

 

je tombe bien dans le "success".

 

Mais je sais pas pourquoi le device me retourne l'erreur 400 (donc requête invalide).

 

J'ai un doute avec le Content-Length, car si je le mets pas entre guillemets, donc en valeur numérique, j'ai l'erreur suivante : 

 

[QUICKAPP1106]: std::exception: 'unable to make cast'

 

Ce serait ça qui bug ? ou autre chose ?

 

 

merci d'avance !!

 

 

Posté(e)

Tu peux enlever le Content-Length et la Host.

Apparemment d'après Postman les datas sont dans un double tableau imbriqué, essaye donc comme ceci :

                data = json.encode({{
                        ["cmd"]="Login",
                        ["param"]={
                            ["User"]={
                                ["Version"]="0",
                                ["userName"]="admin",
                                ["password"]="xxxxxxxxxxxxxx"
                            }
                        }
                        }})

 

  • Thanks 1
Posté(e) (modifié)
Il y a 1 heure, Lazer a dit :

Apparemment d'après Postman les datas sont dans un double tableau imbriqué, essaye donc comme ceci :

 

Je viens de voir cette remarque, et oui, c'est bien cela !! :74:

 

c'est quoi qui t'as fait voir ça ?

ça ?

[
{
....
}
]

 

Modifié par jjacques68
Posté(e)
il y a 25 minutes, jjacques68 a dit :

c'est quoi qui t'as fait voir ça ?

ça ?

[
{
....
}
]

 

Oui tout à fait

 

C"est typiquement le genre de truc sur lequel on peut buter des heures alors qu'un œil extérieur peut le voir :)

Ce qui fonctionne bien aussi, c'est d'arrêter, faire autre chose, et s'y remettre le lendemain avec un œil neuf justement !

  • Like 1
×
×
  • Créer...