IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web & réseau Delphi Discussion :

TNetHTTPRequest Android HTTPS


Sujet :

Web & réseau Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    992
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 992
    Par défaut TNetHTTPRequest Android HTTPS
    Bonjour,

    avec Delphi Rio j'utilise TNetHTTPRequest pour un projet win32, Android.
    Le but récupérer le contenu d'une page web de façon sécurisé, sous win32 pas d'erreur sa semble bon mais sous Android j'ai le message "Certificat serveur non valide ou absent"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      NetHTTPRequest.URL := 'https://xxx/check.php?password=xxxx';
      NetHTTPRequest.Execute;
     
    Procedure THeaderFooterForm.NetHTTPRequestRequestCompleted(
      Const Sender: TObject; Const AResponse: IHTTPResponse);
    Begin
      // remove html if exists
      lResult.Text       := AResponse.ContentAsString; // donne sous android Certificat serveur non valide ou absent
    End;
    Je connais rien à Android j'ai vu OnValidateServerCertificate mais si j'ai bien compris c'est si le serveur a un certificat invalide ce qui n'est pas le cas.
    Merci d'avance pour votre aide

  2. #2
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    étonnant...que donne le StatusCode et le StatusText de AResponse ?

    as-tu installé un certificat racine tiers sous Windows ?

    je me suis battu avec cela dernièrement pour faire une requête HTTPS qui réclame un certificat client vers un certificat self-signed, le composant Delphi ne permet pas de gérer cela et je suis parti sur JHttpsURLConnection (c'est ce qu'utilise Delphi, mais il manque la partie certificats) en m'inspirant de cela.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre émérite
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    992
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 992
    Par défaut
    Je me suis trompé de procédure, l'erreur je la récupère dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Procedure THeaderFooterForm.NetHTTPRequestRequestError(Const Sender: TObject;
      Const AError: String);
    Begin
      lResult.Text       := AError;
    End;
    La procédure NetHTTPRequestRequestCompleted n'est pas appelée sur mon application Android.

    Je n'ai pas installé de certificat racine sur Windows ma page est sur un serveur que j'ai moi-même configuré avec un certificat let's encrypt à ce niveau là il n'y a pas de problème je pense.

    Merci pour le lien je vais étudier ça

  4. #4
    Membre émérite
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    992
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 992
    Par défaut
    Finalement j'ai encore parlé trop vite le problème venait bien du serveur.
    Après plusieurs heures de recherche je ne vois toujours pas comment on importe HttpURLConnection de Android dans delphi Il y a sûrement des vidéos traitant de ce sujet il faut que je cherche, d'autres ont posé la question ailleurs il a été été donnée en réponse l'adresse d'un site qui permettait la conversion en créant les classes mais il ne fonctionne plus.

    Du coup j'ai quand même cherché une solution avec NetHTTPClient, J'ai essayé de charger la page https Google et ça fonctionne miracle j'ai vérifié mon certificat il supporte uniquement TLS 1.3
    TNetHTTPClient.SecureProtocols propose jusqu'a 1.2

    Donc solution il faut que je change mon certificat pour supporter TLS 1.2
    Là où je me pose une question c'est pourquoi l'application fonctionne sur windows, il devra me mettre le même message d'erreur ?

    Merci pour ton aide Paul TOTH

  5. #5
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par ouiouioui Voir le message
    Finalement j'ai encore parlé trop vite le problème venait bien du serveur.
    Après plusieurs heures de recherche je ne vois toujours pas comment on importe HttpURLConnection de Android dans delphi Il y a sûrement des vidéos traitant de ce sujet il faut que je cherche, d'autres ont posé la question ailleurs il a été été donnée en réponse l'adresse d'un site qui permettait la conversion en créant les classes mais il ne fonctionne plus.

    Du coup j'ai quand même cherché une solution avec NetHTTPClient, J'ai essayé de charger la page https Google et ça fonctionne miracle j'ai vérifié mon certificat il supporte uniquement TLS 1.3
    TNetHTTPClient.SecureProtocols propose jusqu'a 1.2

    Donc solution il faut que je change mon certificat pour supporter TLS 1.2
    Là où je me pose une question c'est pourquoi l'application fonctionne sur windows, il devra me mettre le même message d'erreur ?

    Merci pour ton aide Paul TOTH
    NetHTTPClient encapsule les API de l'OS, il n'est pas donc pas uniforme d'une plateforme à l'autre comme cela peut être le cas avec Indy qui utilise le même code avec OpenSSL partout.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    Indy qui utilise le même code avec OpenSSL partout.
    Et qui provoque très souvent des EIdOSSLUnderlyingCryptoError "handshake failure" avec de plus en plus de site HTTS, alors que InternetOpen\InternetConnect\HttpOpenRequest\HttpSendRequest fonctionne toujours, je convertis tous les accès à base de TIdHTTP+TIdSSLIOHandlerSocketOpenSSL en API Windows

    Ce TNetHTTPRequest m'intéresse fortement si l'on peut écrire un accès HTTP via les API système Win/Apple/Android pour remplacer Indy
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. JAVA Android HTTP POST
    Par Benmaster1 dans le forum Android
    Réponses: 6
    Dernier message: 04/03/2014, 16h53
  2. Réponses: 1
    Dernier message: 13/10/2011, 14h32
  3. Android et HTTP Adaptative Streaming
    Par Cdic83 dans le forum Android
    Réponses: 2
    Dernier message: 29/06/2010, 17h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo