Une requête HTTPS pour l'appel d'un webservice SOAP, d'une API REST (…) exécutée depuis iOS peut échouer alors qu'elle est acceptée depuis Windows ou Android avec la réponse suivante :
Une erreur système a été détectée pendant l'envoi de la requête HTTP. Code erreur 100138 Niveau erreur non fatale
Cela peut être le cas avec les fonctions HTTPEnvoie ou RESTEnvoie si : - la requête est de type POST,
- la taille des données du contenu de la requête excède 65 535 octets,
- la négociation avec le serveur contacté échoue en utilisant le protocole HTTP 2,
- l'application est compilée avec WINDEV Mobile 28 jusqu'à "Update 1" (280051, 280066p, 280066r#) qui utilisent OpenSSL 3 pour sécuriser les échanges HTTPS.
Afin de permettre l'exécution de la requête dans ce cas, il suffit de forcer l'exécution de HTTP 1.1. Exemple :
ReqHTTP est un httpRequête RéponseHTTP est un httpRéponse
ReqHTTP.URL = "https://monserveur/" ReqHTTP.Méthode = httpPost ReqHTTP.Contenu = MonJson
ReqHTTP.VersionHTTP = httpVersion1_1
RéponseHTTP = HTTPEnvoie(ReqHTTP)
Précisions : - A partir de la version 28 "Update 2" le passage par HTTP 1.1 se fera automatiquement sous iOS si ce cas est rencontré.
- En version finale 280051n et "Update 1" 2800669 et 280066r#, cette solution affiche un warning de compilation sous l'éditeur :
Warning : La constante 'httpVersion1_1' n'est pas disponible pour la cible 'iOS'. Vous pouvez désactiver le code pour la configuration courante grâce à une condition de compilation (<COMPILE SI ...>).
Ce warning peut être ignoré, la constante sera bien prise en compte.
|