FAQ n°19034, publiée le 19/07/2019
Pourquoi l'utilisation du protocole HTTP depuis une application Android peut ne pas donner le résultat attendu sous Android 9 ?

A partir de Android 9, Google supprime par défaut la possibilité d'utiliser le protocole HTTP (non sécurisé), au profit de l'utilisation de HTTPS (un certificat sur le serveur permet le chiffrement des échanges). 


De ce fait lorsqu'une application est générée en spécifiant un niveau d'API cible à 28, et que le système d'exécution est Android 9 ou supérieur, si l'application utilise le protocole HTTP le contenu de la réponse sera vide.


Les fonctionnalités principalement impactées sont les suivantes : 

  • consommation d'un webservice importé dans le projet via sons WSDL,
  • connexion à une base de données par SQLConnecteWS (via le serveur réservé),
  • récupération d'images, 
  • l'affichage d'un contenu dans un champ HTML...


Donc sous Android 9 afin de rétablir l'accès aux ressources, les solutions sont les suivantes : 


  • Solution 1 : passer tous les échanges HTTP en HTTPS :

    • ajout d'un certificat sur le serveur web qui héberge le webservice, images, pages (…),
    • modifier dans l'application les adresses pour avoir "https://..." et non plus "http://...". Le remplacement doit être fait : 
      • dans les adresses pour accéder à des contenus HTML, des images,
      • pour l'adresse d'un webservice importé : <NomWebservice>..Adresse = "https://..."


  • Solution 2 : autoriser l'utilisation de HTTP :

    En effet on peut indiquer dans le manifeste configuré lors de la génération de l'APK que le protocole HTTP pourra être utilisé. Cela peut être fait soit : 
    • de façon automatique et systématique pour toutes les applications grâce à une mise à jour de WINDEV Mobile :
      • demander la mise à jour portant la référence 114 307 dans les modules correctifs proposés dans les ressources pratiques de notre site : 
        https://www.pcsoft.fr/st/nouveautes-st.html
      • régénérer et déployer à nouveau l'application avec la mise à jour installée.

    • en éditant le manifeste de l'application lors de sa génération (cela permet d'effectuer le réglage application par application) :
      • lancer l'assistant de génération de l'application,
      • à l'étape "Configuration" cliquer sur "Editer le manifeste",
      • sélectionner le noeud "Application",
      • clic droit sur le noeud et "Ajouter un attribut",
      • indiquer le nom "android:usesCleartextTraffic" et la valeur "true" pour la valeur,
      • valider l'édition du manifeste puis les étapes suivantes de l'assistant.




Dans une prochaine version de WINDEV Mobile, l'assistant de génération de l'APK proposera une option dédiée pour autoriser ou non l'utilisation de HTTP.