Problème d'encodage des requêtes API depuis iOS 16

Bonsoir,
Depuis la mise à jour de mon iPhone vers iOS 16, les requêtes API vers Jeedom (via Raccourci) affichent le résultat avec le mauvais encodage.

Par exemple, « Présent » apparait désormais Présent.

Cela pose déjà un problème esthétique mais aussi d’automatisation de certains de mes raccourcis qui se basaient sur le résultat d’une requête pour décider la suite à donner.

Si je comprends bien, le résultat est affiché au format ISO 8859-1 alors que Jeedom retourne le résultat en UTF-8 (ou l’inverse peut être ?)

Dans le retour de la requête Jeedom il n’y a aucun en-tête donc difficile pour l’iPhone de savoir sous quel format l’afficher. Néanmoins cela fonctionnait sous iOS 15.

Une idée ? Qui est le responsable dans ce cas ? (iOS qui interprète mal ou la page de réponse sans header ?)

N.B. Pas de soucis d’affichage si on execute la requete via Safari directement. Le problème n’apparait que via le moteur HTML de l’appli raccourci.

Merci d’avance !

Bonjour,

Vous répondez déjà à la question :

Et ensuite ? Ça vous est utile de savoir qui est responsable ? Je ne pense pas.
Il faut arrêtez de toujours chercher un responsable, ce qu’il faut c’est chercher des solutions.

Bonjour @Mips

L’idée n’etait pas à tout prix de trouver un responsable, c’etait surtout pour orienter la problématique ET ensuite trouver une solution dépendant du problème.

Ce n’est pas parce que ça fonctionnait correctement sous iOS 15 que cela ne provient pas d’un manque de header sur les reponses HTML de Jeedom.

Peut etre que l’application raccourci ne prennait pas en compte tous les paramètres sous iOS 15 et que depuis iOS 16 elle est moins permissive.

Je suis désolé si mon intention n’etait pas clair, je cherche evidemment une solution et toutes les idées sont bonnes à prendre :blush:

Excellente journée

Je suis d’accord la-dessus aussi, en tout cas sur le principe :slight_smile:

Ceci dit, quand je regarde les réponses d’un appel à l’api jeedom, moi je vois ca:
image
donc le charset est bien défini par jeedom dans la réponse

Par ailleurs, il se fait que la norme http1.1 dit que le charset par défaut est iso-8859-1 si non spécifié par le serveur; coïncidence (ou pas) :wink:

donc cela semble confirmer que l’app raccourci ne tient pas compte du charset reçu dans la réponse de l’api et force iso-8859-1 d’où l’erreur d’encodage

mais il y a p-e une config à faire dans l’app pour pouvoir soit ne pas forcer le charset et tenir compte de celui reçu, soit le forcer en utf8
ou alors faut attendre un fix

vérifiez déjà, via un navigateur sur ordi, sur les appels api que vous faite via l’app raccourci, si dans la réponse vous recevez bien le charset également; si oui alors ca confirme le bug sur l’app; sinon c’est p-e que il y a une config sur votre jeedom qui a changé mais en fait cela n’empêche pas que l’app raccourci ne semble pas suivre le protocol comme il faut

Bonjour,
Comme d’hab :slight_smile:
ça pourrait être pas mal de mettre une capture du raccourci en question, pour aider à t’aider…

PS : je suis sous iOS 16.0.2 et pas de souci.
Du coup je viens d’essayer, si j’envoie une requête API, via Raccourcie sur une commande type Info contenant « Présent », ça me retourne « Présent »…!

Merci pour vos retours.
@Mips En effet, au temps pour moi. Je pensais voir les en-têtes directement dans le code HTML, et j’en ai déduis qu’il n’y en avait pas. Mais avec l’analyseur du navigateur en effet c’est bien formaté. Ça m’apprendra :sweat_smile:

@Henri iOS 16.0.2 également. Je viens de créer un raccourci de test comme tu as dû faire. Le voici ainsi que son résultat avec l’appel de la commande ID 932 (état de l’alarme)

Houlala…
Alors je suis pas du tout expert de Raccourci, et en tout cas bien moins que toi (à voir que tu utilises des choses que je connais pas du tout)…
Mais, de mémoire (car j’ai fait mes raccourcis il y a bien longtemps et plus touché depuis) j’avais eu des problèmes avec l’outil que tu utilises
« Obtenir le contenu de »
j’avais d’ailleurs abandonné de comprendre la nuance (quand on l’utilise avec une page web) avec le second. (celui que j’utilise) qui est : « Obtenir le contenu de la page web ».

Si tu essayes avec ce dernier, c’est mieux ?

PS : mon raccourcie de test qui tient en 3 actions :slight_smile: …? :
(quand on le lance avec le « play » / le texte étant alors en tout petit, mais au mois tu vois tout)

PS 2 : "Entrée indiquer te sert à avoir un Raccourcie générique dont seul l’entrée change ? Je savais pas qu’on pouvait faire cela…

PS 3 : pour être averti si une action auto (« Automation ») n’est pas passée correctement, j’utilise cela (action super utile, par exemple, elle me sert ici à redémarrer automatiquement la box + routeur etc… si je perd le lien avec jeedom !! Si l’action ne passe pas, je suis averti, puis un peu plus tard un scénario se met en route. Si l’action passe, il se passe rien. Tout se faisant sans que j’ai a y penser…):

@Henri Merci de ton retour.
En effet moi je me suis complexifié la tâche mais c’est pour mieux me la simplifier. Tout est géré par des fonctions et mes raccourcis appellent ces fonctions avec des paramètres.
Il faudra vraiment que je détaille ça quelque part un jour, c’est un peu chiant à mettre en place mais après c’est vraiment top. La maintenabilité est super facile.

Sinon, je viens de tester de remplacer l’action « Obtenir le contenu de » par « Obtenir le contenu de la page web ». En effet cela semble mieux ! Surement que cette action prends en compte les en-têtes HTML contrairement à l’autre.

Point négatif mais qui ne concernera pas tout le monde, elle est bien plus longue à s’exécuter : j’ai un raccourci qui fait 22 appels à Jeedom pour m’afficher un rapport.

  • Avec « Obtenir le contenu de » : 3 secondes
  • Avec « Obtenir le contenu de la page web » : 11 secondes

Le problème semble donc résolu, ou du-moins contourné.
Très malin merci bien du conseil @Henri :slight_smile:

PS.2 : Pour répondre à ta question sur « Entrée indiquée », c’est juste la suite de l’action « Demander ».
Lorsque j’exécute le raccourci, une fenêtre apparait et me demande de saisir l’ID de la commande. « Entrée indiquée » c’est ce que tu aura « marqué », et il se met dans une variable que j’ai nommé « id-cmd ». Je réutilise cette variable pour forger l’URL d’appel à la fin :wink:

1 « J'aime »

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.