PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV Mobile 2024 → Erreur sytème 7 lors de l'envoie d'une requête http
Erreur sytème 7 lors de l'envoie d'une requête http
Started by Pascal BOULESTEIX, Apr., 11 2023 7:35 AM - 8 replies
Registered member
964 messages
Popularité : +16 (20 votes)
Posted on April, 11 2023 - 7:35 AM
Bonjour
Il arrive aléatoirement qu'une de mes procédures plante avec une erreur système N°7 lors d'un restEnvoie.
Une idée ?
maRequête est un restRequête
laRéponse est un restRéponse
réponse est un Variant
sMyURL est une chaîne ANSI
sMyURLEncode est une chaîne
sMyURL="https://"+gsMyUseBeta+"wnat.fr/ANDROID_xxxx.php?ORGANISME="+MyOrganisme+"&CODEUSER="+MyUser+"&CODE="+MyCode
sMyURLEncode=URLEncode(sMyURL)
maRequête.URL=sMyURLEncode
HTTPTimeOut(gnHTTPTimeOut)
maRequête.DuréeNonRéponse=gnHTTPDureeNonReponse
maRequête..TimeoutConnexion=gnHTTPTimeOut

laRéponse=RESTEnvoie(maRequête)

SI ErreurDétectée ALORS
Info("ERREUR ACCESS INTERNET","",sMyURL)
Erreur("ERR70",sMyURL,"gnHTTPDureeNonReponse="+gnHTTPDureeNonReponse,"gnHTTPTimeOut="+gnHTTPTimeOut,ErreurInfo(errComplet))
SINON





--
Pascal Boulesteix
Applications Visiolittoral et WNat
Registered member
3,347 messages
Popularité : +93 (137 votes)
Posted on April, 11 2023 - 9:45 AM
Salut,
Je comprends pas trop
C'est dans ton code
Erreur("ERR70",
Met le en commentaire et tu ne l'auras plus, non!
Met plutôt
SI ErreurDétectée ALORS
Erreur(ErreurInfo(errComplet))

Sinon l'erreur c'est sûrement
L'Erreur de Certificat Invalide
Ou le Nom du Certificat Invalide
Erreur d'un Certificat Expiré
Message modified, April, 11 2023 - 9:59 AM
Registered member
3,347 messages
Popularité : +93 (137 votes)
Posted on April, 11 2023 - 10:07 AM
laRéponse=RESTEnvoie(maRequête)
// Si erreur rencontrée
SI laRéponse = Faux ALORS
// Selon le type d'erreur rencontré
SELON ErreurInfo(errCode)
// Certificat invalide
// ou ne provenant pas d'une société connue
CAS httpErreurCertificatInvalide :
// Ignorer le certificat ?
SI OuiNon("Alerte de sécurité détectée !", ...
"Certificat invalide.", ...
"Ignorer ce certificat ?") = Oui ALORS
HTTP.IgnoreErreur = httpIgnoreCertificatInvalide
// Nouveau lancement de la requête
// en ignorant cette erreur
RESTEnvoie(maRequête)
FIN
// Date du certificat non-valide ou expiré
CAS httpErreurCertificatExpiré :
// Ignorer la date du certificat ?
SI OuiNon("Alerte de sécurité détectée !", ...
"Date du certificat invalide ou expiré.", ...
"Ignorer cette date ?") = Oui ALORS
HTTP.IgnoreErreur = httpIgnoreCertificatExpiré
// Nouveau lancement de la requête
// en ignorant cette erreur
RESTEnvoie(maRequête)
FIN
FIN
FIN
Registered member
3,347 messages
Popularité : +93 (137 votes)
Posted on April, 11 2023 - 10:19 AM
Il est aussi possible de gérer avec la variable maRequête
Et la propriété IgnoreErreur et les constantes suivantes
httpIgnoreCertificatExpiré, httpIgnoreCertificatInvalide, httpIgnoreNomCertificatInvalide, httpIgnoreRévocation, httpIgnoreRedirection.
Mais ça revient au même.
Registered member
964 messages
Popularité : +16 (20 votes)
Posted on April, 11 2023 - 10:45 AM
Merci pour tes remarques.
Ceci-dit, la fenêtre présentée plus haut est bien le résultat de la fonction ErreurInfo(errComplet) (à partir de la ligne "- Appel WL". Les lignes au dessus sont là pour agrémenter un DEBUG maison (pour savoir dans quel restEnvoie il y a un problème.
Dans l'erreur, le code erreur est 7. A moins que erreurInfo(ErrCode) renvoie autre chose que 7, il est difficile de faire le lien avec un problème de certificat, sachant que tous les autres appels restEnvoie fonctionnent.
Une chose que je n'avais pas indiqué, c'est que le restEnvoie qui bugue de temps en temps et exécuté depuis un Thread
ThreadExecute("gTHREAD_VERIF_VERSION", threadNormal, gTHREAD_VERIF_VERSION)

Je viens de remplacer ce thread par un TâcheParallèleExécute

--
Pascal Boulesteix
Applications Visiolittoral et WNat
Registered member
3,347 messages
Popularité : +93 (137 votes)
Posted on April, 11 2023 - 8:34 PM
Je suis presque sûr d'un problème de certificat
Car tu es en HTTPS et qu'il faut normalement l'installer sur Android
Registered member
964 messages
Popularité : +16 (20 votes)
Posted on April, 12 2023 - 8:45 AM
L'installation d'un certificat est effectué dans les premières lignes de code de l'init du projet.
CertificatDeConfianceAjoute("isrgrootx1.pem")

J'avais ajouté cette fonctionnalité il y a un an https://forum.pcsoft.fr/fr-FR/pcsoft.fr.windevmobile/45115-crosscall-trekker-core-android-6-0-1-restenvoire-45124/read.awp…

--
Pascal Boulesteix
Applications Visiolittoral et WNat
Posted on February, 21 2024 - 1:42 PM
Bonjour Pascal,
Je ressort ce sujet d'un an pour vous demander si vous étiez parvenu à résoudre ce problème d'erreur système 7 lors d'un RestEnvoie.

Je rencontre la même erreur dans une application Android.
J'ai trouvé des informations concernant le pare-feu, mais cela s'est révélé inefficace.

Merci d'avance,
Erwan
Registered member
964 messages
Popularité : +16 (20 votes)
Posted on February, 21 2024 - 6:01 PM
Salut Erwan
Je ne me souviens plus très bien hormis ce qui est écrit dans le sujet.
Tu installes un certificat ou pas ?
Tu peux aussi regarder dans le logcat. Cherche dans le forum, j'ai écris sur le sujet logcat

--
Pascal Boulesteix
Applications Visiolittoral et WNat