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 :

Erreur "HTTP/1.1 404 Not Found" lors d'un POST sur HTTPS


Sujet :

Web & réseau Delphi

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 9
    Points : 3
    Points
    3
    Par défaut Erreur "HTTP/1.1 404 Not Found" lors d'un POST sur HTTPS
    Bonjour,

    Je viens poster ici car je suis dans l'incapacité de trouver une solution seul, mes recherches sur le net n'étant pas fructueuses..

    J'utilise DELPHI 7 et Indy 9.00.10 et je tente de faire un post sur un adresses HTTPS.

    J'obtiens l'erreur suivante : EIdHTTPProtocolException : 'HTTP/1.1 404 Not Found'

    J'interprète cette erreur comme si la page n'existait pas cependant en reproduisant les mêmes paramètres d'envoi avec POSTMAN, j'obtiens un résultat tout autre correspondant aux données que j'envoie et plus probable d'autant plus que la page existe bien..

    J'imagine que cela à a faire avec le SSL car j'ai réussis à faire des POST sur du HTTP sans problème.

    Mon code ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
        lRequest := FHttpClient.Request;
        lRequest.Accept := 'application/json';
        lRequest.ContentType := 'application/json;charset=utf-8';
        lRequest.ContentEncoding := 'utf-8';
     
        SSLHandler := Nil;
        try
          SSLHandler := TIdSSLIOHandlerSocket.Create(nil);
     
          SSLHandler.SSLOptions.Method := sslvSSLv23; //J'ai essayé toutes les méthodes mais rien n'y fait.
     
          //FHttpClient est un objet derivant de TIdHTTP
          FHttpClient.IOHandler := SSLHandler;
     
         //lStream et lRestult sont des TMemoryStream;
         //lStream contient un enveloppe en JSON. 
     
          FHttpClient.Post(DefineUrl(AUrl),lStream,lResult);
     
        finally
          SSLHandler.Free;
        end;
    J'ai essayé de modifier des paramètres comme :
    -FHttpClient.ProtocolVersion
    -FHttpClient.HandleRedirects
    -FhttpClient.Request.UserAgent
    -SSLHandler.SSLOptions.Mode

    Mais sans succès...

    Merci d'avance pour votre temps !

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 : 13 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Le problème c'est que ton code à l'air bon, j'ai pour habitude de tout créer à la volée moins parasite que les valeurs du DFM que l'on peut vite pourrir
    A chaque fois, la résolution de ce genre de problème se fait à tâtons.

    Es-tu sur que DefineUrl renvoie la bonne chose ?
    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

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Dans le cas présent, DefineUrl renvoie ce qu'il prend en paramètre c'est à dire l'URL correct.

    Je pensais peut être à un problème de version de DLL et à la version 9.0.10 de INDY mais comme je ne sais pas vérifier si la DLL est la bonne, j'en ai mis plusieurs jusqu'a trouver une qui se chargeait bien

    Merci pour ton temps

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    si le serveur est bien fait, il indique que l'URL n'existe pas...mais sur un WebService l'erreur 404 peut aussi indiquer qu'un objet qu'on cherche à mettre à jour n'existe pas...

    quand je sèche complètement sur ce genre de chose (et ça me rappelle un post que j'ai fait récemment sur les DLL ) je crée un page PHP qui affiche tout ce qu'elle reçoit, et je l'invoque avec mon code puis POSTMAN (dans ton cas pour) voir les différences.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Bonsoir,

    Et bien j'ai fait quelque chose du même genre en interceptant via a WireShark l'enveloppe envoyée et je n'avais pas de différences avec Postman

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par oxiidoa Voir le message
    Bonsoir,

    Et bien j'ai fait quelque chose du même genre en interceptant via a WireShark l'enveloppe envoyée et je n'avais pas de différences avec Postman
    il y en a forcément une, car le serveur ne peux différencier les deux requêtes que par leur contenu
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Selon vous le problème se situe donc plus dans le contenu

    Je vais essayer cette page php pour récupérer ce que j'envoie et comparer

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    A défaut d'avoir fait une page PHP, j'ai trouvé sur internet un moyen de tester de la même manière : https://httpbin.org/post qui renvoi ce qu'on lui envoi.

    Via Postman lorsque j'envoie un POST à l'URL ci-dessus il me retourne bien un JSON contenant les données que je lui ai envoyé (Headers + JSON).

    Maintenant problème avec Delphi, avec cette même URL j'obtiens l'erreur suivante :

    EIdOSSLConnectError : Erreur lors de la connexion au protocole SSL.

    J'ai tenté de faire varier la propriété Method des SSLOptions de mon IOHandler :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      //Essayé aussi : sslvSLLv2, sslvSSLv23 et sslvSLLv3 
      //Mais toujours le même message d'erreur
      SSLHandler.SSLOptions.Method := sslvTLSv1; 
     
      FHttpClient.IOHandler := SSLHandler;
    Je suis perdu, j'avais il me semble déjà rencontré une erreur similaire avec le lien que j'utilisais avant mais je crois l'avoir corrigé avec ce paramètre..


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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    j'utilise cela dans un projet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    // paramétrage du lien ssl
      SSL := TIdSSLIOHandlerSocketOpenSSL.Create;
      SSL.SSLOptions.Method := sslvSSLv23;
      SSL.SSLOptions.SSLVersions := [sslvSSLv2, sslvSSLv3, sslvTLSv1, sslvTLSv1_1, sslvTLSv1_2];
     
    // paramétrage du requeteur HTTP
      HTTP := TIdHTTP.Create;
      HTTP.IOHandler := ssl;
      HTTP.Request.CharSet := 'utf-8';
      HTTP.Request.ContentType := 'application/json';
      HTTP.Request.Accept := 'application/json';
    dans un autre je ne précise rien sur SSL qui par défaut utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    const
      DEF_SSLVERSION = sslvTLSv1;
      DEF_SSLVERSIONS = [sslvTLSv1];
    mais le serveur réclame du TLS de toute façon

    EDIT: d'ailleurs je n'utilise plus OpenSSL sur ce projet mais SChannel
    https://github.com/tothpaul/Delphi/t.../Indy.SChannel
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Je pense que tu utilises Indy 10+, je ne pense pas pouvoir utiliser les mêmes choses que toi

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par oxiidoa Voir le message
    Je pense que tu utilises Indy 10+, je ne pense pas pouvoir utiliser les mêmes choses que toi
    oui Indy 10, mais c'est n'est pas compatible D7 ? j'en ai eu besoin pour une option qui n'existait pas avant
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  12. #12
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Je ne sais pas, je suppose que oui
    Je devrais peut être passer en Indy 10 effectivement.

Discussions similaires

  1. [WS 2008 R2] HTTP 404 NOT FOUND
    Par joelmomo dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 07/02/2012, 08h27
  2. Erreur "404 not found"
    Par daydream123 dans le forum Spring
    Réponses: 2
    Dernier message: 03/02/2012, 15h58
  3. Erreur "faultString: (404)Not Found"
    Par notoriuous1 dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 28/12/2011, 13h15
  4. Apex et erreur 404 Not Found
    Par Kazevil dans le forum Administration
    Réponses: 1
    Dernier message: 25/03/2010, 14h47
  5. [phpBB][3] Erreur 404 not found lors de la demande de la page d'installation
    Par juninho dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 14
    Dernier message: 12/01/2008, 19h49

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