PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → 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
Iniciado por Pascal BOULESTEIX, 11,abr. 2023 07:35 - 8 respuestas
Miembro registrado
965 mensajes
Popularité : +16 (20 votes)
Publicado el 11,abril 2023 - 07:35
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
Miembro registrado
3.354 mensajes
Popularité : +93 (137 votes)
Publicado el 11,abril 2023 - 09:45
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é
Mensaje modificado, 11,abril 2023 - 09:59
Miembro registrado
3.354 mensajes
Popularité : +93 (137 votes)
Publicado el 11,abril 2023 - 10:07
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
Miembro registrado
3.354 mensajes
Popularité : +93 (137 votes)
Publicado el 11,abril 2023 - 10:19
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.
Miembro registrado
965 mensajes
Popularité : +16 (20 votes)
Publicado el 11,abril 2023 - 10:45
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
Miembro registrado
3.354 mensajes
Popularité : +93 (137 votes)
Publicado el 11,abril 2023 - 20:34
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
Miembro registrado
965 mensajes
Popularité : +16 (20 votes)
Publicado el 12,abril 2023 - 08:45
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
Publicado el 21,febrero 2024 - 13:42
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
Miembro registrado
965 mensajes
Popularité : +16 (20 votes)
Publicado el 21,febrero 2024 - 18:01
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