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

Composants VCL Delphi Discussion :

[XE2]TIdHTTP.Post qui déclenche une exception EConvertError


Sujet :

Composants VCL Delphi

  1. #1
    Membre du Club
    Homme Profil pro
    Consultant en développement
    Inscrit en
    Septembre 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 19
    Points : 44
    Points
    44
    Par défaut [XE2]TIdHTTP.Post qui déclenche une exception EConvertError
    [edit]J'aurais dû mettre mon sujet dans la rubrique "Web & réseau"

    Bonjour,

    Premiers pas avec Indy, le Post du composant visuel TIdHTTP déclenche l'exception en question :

    <votre programme> a déclenché la classe d'Exception EConvertError avec le message "" n'est pas une erreur entière valide.

    Extrait du code :
    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
    24
    25
    26
    27
    28
    29
    30
        Ts := TStringList.Create;
        try
            //itemDragMoveNative
            IdHTTP1.Request.Referer := 'app:/LSMGUIAIR.swf';
            IdHTTP1.Request.Connection :='Keep-Alive';
            IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded';
            IdHTTP1.Request.UserAgent := 'User-Agent: Mozilla/5.0 (Windows; U; fr-FR) AppleWebKit/533.19.4 (KHTML, like Gecko) AdobeAIR/3.3';
            IdHTTP1.Request.Host := '127.0.0.1:11530';
            IdHTTP1.Request.ContentVersion:='1.1';
            vTemp:=      'text/xml, application/xml, application/xhtml+xml, text/html;q=0.9, text/plain;q=0.8, text/css, image/png, ';
            vTemp:=vTemp+'image/jpeg, image/gif;q=0.8, application/x-shockwave-flash, video/mp4;q=0.9, ';
            vTemp:=vTemp+'flv-application/octet-stream;q=0.8, video/x-flv;q=0.7, audio/mp4, application/futuresplash, */*;q=0.5';
            IdHTTP1.Request.Accept := vTemp;
     
            Ts.Add('op=itemDragMoveNative');
            Ts.Add('id=G:\Applications-nouveau\Poser Pro 2012 Content\Runtime\libraries\Pose\People\Alyson\Action\CatchingCab.p2z');
            Ts.Add('overStage=false');
            Ts.Add('oy=361');             //TODO gérer oy et ox
            Ts.Add('x='+IntToStr(X));
            Ts.Add('y='+IntToStr(Y));
            Ts.Add('ox=240');
     
            vTemp := Form1.IdHTTP1.Post('http://127.0.0.1:11530/apps/lms/api.py',ts);
            mmo1.Lines.add(Form1.IdHTTP1.ResponseText);
            mmo1.Lines.add(vTemp);
            mmo1.Lines.add('-------------------------------------');
     
        finally
            Ts.Free;
        end;

    L'exception est sur la ligne (identifiée quand je fait "Arrêter" en mode debug) :
    vTemp := Form1.IdHTTP1.Post('http://127.0.0.1:11530/apps/lms/api.py',ts);

    Cependant si je fait "continuer" l'exécution n'est pas branché sur le "finally" puisque la ligne mmo1.Lines.add(Form1.IdHTTP1.ResponseText) met bien dans le mémo : HTTP/1.1 200 OK

    Donc ça déclenche une exception en mode débug mais elle n'est pas "branchée" vers le finally...


    J'ai fait le test d'enlever le port :
    vTemp := Form1.IdHTTP1.Post('http://127.0.0.1/apps/lms/api.py',ts);

    Ca me génère une 404 error par contre ça va directement dans le finally sans passer par les 3 lignes mmo1.Lines.add... C'est à n'y rien comprendre !

    Avec vous une idée, je débute avec indy ?

    Au pire en release ça sera pas visible mais bon...

    NB tout doit passer sur le 127.0.0.1 (ce qui ne m'a pas aidé à sniffer les trames pour voir ce qui passait par le "tuyau") et le port est obligatoirement 11530.


    Et tant que j'y suis, seconde question, l'autre application attend un :

    POST /apps/lms/api.py HTTP/1.1

    or Indy envoie :

    POST /apps/lms/api.py HTTP/1.0

    Je peux forcer ça quelque part ? (je ne sais pas si ça peut être la cause de mon "exception").


    Merci d'avance !

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Est-ce une Exception ou une Notification du Déboggueur ?

    Indy en Debug fourni ses codes sources donc si une erreur se produit dedans protégé par un try except, le déboggueur notifie l'erreur mais étant capturée cela laisse continuer l'execution
    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
    Membre du Club
    Homme Profil pro
    Consultant en développement
    Inscrit en
    Septembre 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 19
    Points : 44
    Points
    44
    Par défaut
    Bonjour ShaiLeTroll,

    Je suis avec la version de "base" d'Indy fournie avec Rad Studio, donc probablement pas fournis avec les codes sources (il m'est impossible de debuger F7 vTemp := Form1.IdHTTP1.Post('http://127.0.0.1:11530/apps/lms/api.py',ts); ), ou je ne les avais pas cochés à l'installation de RadStudio.

    Je vais regarder ça.

    [edit]
    Une réinstallation complète (par défaut l'installation est complète) de RadStudio ne change rien.

    De plus j'ai tenté en décochant "Exceptions silencieuses Indy" (Options -> Options du débogueur -> Débogueurs Embarcadero -> Exceptions du langage) ça ne l'enlève pas, ça m'en rajoute une nouvelle qui se déclenche après la 1ière exception : EidConnClosedGracefully 'La connexion s'est fermée proprement' (qui me semble méritée d'être mise "silencieuse" ).

    [edit2]
    Par contre en regardant la pile il semblerait que ce soit un problème de conversion de date. Je ne sais pas si ça peut nous aider à diagnostiquer ça :

  4. #4
    Membre du Club
    Homme Profil pro
    Consultant en développement
    Inscrit en
    Septembre 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 19
    Points : 44
    Points
    44
    Par défaut
    Bonjour,

    J'ai avancé dans mes investigations grâce à la suggestion de ShaiLeTroll.

    L'autre application renvoie dans le header :

    Expires: -1:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    HTTP/1.1 200 OK
    Content-type: text/xml
    Expires: -1: 
    Cache-Control: no-store,no-cache,must-revalidate
    Cache-Control: post-check=o,pre-check=o
    Pragma: no-cache
    Ceci plante la fonction GMTToLocalDateTime d'Indy, je ne sais pas si on peut lui "dire" de ne pas s'occuper de traiter le header, ce n'est pas ce qui m'intéresse.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 74
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par hohorga Voir le message

    Et tant que j'y suis, seconde question, l'autre application attend un :

    POST /apps/lms/api.py HTTP/1.1

    or Indy envoie :

    POST /apps/lms/api.py HTTP/1.0

    Hello,

    Je me permet de remonter le post car j'ai le même genre d'erreur.
    J'envoie un POST via HTTP configuré dans Indy comme étant v1_1 et je reçois un message d'erreur me disant http1.0 non reconnu.

    J'ai l'impression que l'envoi se fait en 1.0 alors que j'ai bien sélectionné le 1.1 ???

Discussions similaires

  1. [MySQL-5.6] Trigger qui déclenche une exception
    Par loustalet dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 18/04/2014, 21h13
  2. [PHP 5.3] Instance de BDD dans une classe qui cause une exception
    Par lamouche42 dans le forum Langage
    Réponses: 5
    Dernier message: 29/10/2011, 12h13
  3. DataSet : dataTable.Fill dans un BackgroundWorker déclenche une exception
    Par nicopulse dans le forum Accès aux données
    Réponses: 5
    Dernier message: 21/12/2010, 17h46
  4. bouton qui déclenche une include php
    Par serna dans le forum jQuery
    Réponses: 4
    Dernier message: 31/03/2010, 11h14
  5. Réponses: 3
    Dernier message: 12/08/2009, 13h56

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