Ton test secure était nécessaire pour éliminer une possibilité.
Je voulais le faire aussi.
Donc à partir de là, j'ai passé la matinée à intercepter les réponses des requêtes sur toutes les api que j'utilise, exemple sur periph.caract:
- Code : Tout sélectionner
error: AxiosError: Parse Error: Invalid character in chunk size
at AxiosError.from (file:///...node_modules/axios/lib/core/AxiosError.js:89:14)
at RedirectableRequest.handleRequestError (file:///.../node_modules/axios/lib/adapters/http.js:610:25)
at RedirectableRequest.emit (node:events:514:28)
at eventHandlers.<computed> (...\node_modules\follow-redirects\index.js:38:24)
at ClientRequest.emit (node:events:514:28)
at Socket.socketOnData (node:_http_client:544:9)
at Socket.emit (node:events:514:28)
... 3 lines matching cause stack trace ...
at TCP.onStreamRead (node:internal/stream_base_commons:190:23) {
rawPacket: <Buffer 48 54 54 50 2f 31 2e 31 20 32 30 30 20 4f 4b 0d 0a 44 61 74 65 3a 20 54 68 75 2c 20 30 34 20 4a 75 6c 20 32 30 32 34 20 30 38 3a 34 31 3a 31 30 20 47 ... 590 more bytes>,
reason: 'Invalid character in chunk size',
code: 'HPE_INVALID_CHUNK_SIZE',
bytesParsed: 415,
config: {
....
Ce qui serait intéressant d'étudier, c'est le rawPacket en erreur pour voir ce qu'il y a dedans mais je manque de connaissances sur les buffers, c'est pas mon domaine, moi c'est plutôt les systèmes d'informations
- Code : Tout sélectionner
error: <Buffer 48 54 54 50 2f 31 2e 31 20 32 30 30 20 4f 4b 0d 0a 44 61 74 65 3a 20 54 68 75 2c 20 30 34 20 4a 75 6c 20 32 30 32 34 20 31 31 3a 34 39 3a 35 30 20 47 ... 590 more bytes>
J'ai intercepté ensuite les méthodes de l'api que j'utilise:
-
periph.list : Aucun soucis. Ca passe sur tous les types de valeurs float ou list ou string.
-
periph.value et
periph.macro : La réponse est en erreur mais ca passe, normal puisque c'est du post et que l'action est exécutée avant l'envoie de la réponse:
- Code : Tout sélectionner
error: HTTP/1.1 200 OK
Date: Thu, 04 Jul 2024 10:43:38 GMT
Server: Apache
Access-Control-Allow-Origin: *
Set-Cookie: PHPSESSID=6f4b2eee9850b24cb8bedcad142eeba7; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Keep-Alive: timeout=15, max=9
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html
3a
{
"success": 1,
"body":
{
"result": "[OK]"
}
}
0
L'erreur retourne que ca c'est bien passé quand même. Là on a une piste sur la forme de la réponse qui elle ne passe pas même si son contenu est correcte.
periph.value_list Tout passe. Aucune erreur mais uniquement en value_type 'list' mais c'est normal et c'est précisé dans la doc.
periph.caract Là, rien ne passe.
types de valeur float ou list. Tout en erreur.
- Code : Tout sélectionner
error: HTTP/1.1 200 OK
Date: Thu, 04 Jul 2024 11:15:55 GMT
Server: Apache
Access-Control-Allow-Origin: *
Set-Cookie: PHPSESSID=fc4c4e9d7137807e1076b7df28bb08a5; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Keep-Alive: timeout=15, max=8
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html
d7
{
"success": 1,
"body":{"periph_id": "1151500",
"name": "Interrupteur Salon",
"last_value": "0",
"last_value_text": "Off",
"unit": "",
"battery": "",
"last_value_change": "2024-07-04 12:47:16"}}
0
Dans l'erreur on récupère quand même les infos correctes du device et même le code retour est "success". Truc de fou...
donc on peut penser que ce n'est pas le device ni la requête sur le device mais le format de la réponse.
Donc vu que je n'ai pas le code source pour débugger les api, on ne peut faire que des hypothèses.
Ce qui me semble le plus proche c'est que le pb est dans la réponse de la requête et est lié à juste quelques api :
periph.caract,
periph.value et
periph.macro.
Ce sont des méthodes qui sont liées à la valeur courante des devices.
A moins d'un hasard, je pense que les méthodes qui sont utilisées pour récupérer ou définir la valeur retourne un format de réponse pas bon.
Et c'est très curieux mais uniquement en local.