Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Nouveau Membre du Club
    Homme Profil pro Michel DIAZ
    Consultant en développement
    Inscrit en
    septembre 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Nom : Homme Michel DIAZ
    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 : 38
    Points
    38

    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 :
    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 Confirmé Sénior Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    juillet 2006
    Messages
    10 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2006
    Messages : 10 026
    Points : 12 836
    Points
    12 836

    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

    Halte à la ségrégation des Cinémas, VO sur Paris, VF en Banlieue, Abonnement résilié !

  3. #3
    Nouveau Membre du Club
    Homme Profil pro Michel DIAZ
    Consultant en développement
    Inscrit en
    septembre 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Nom : Homme Michel DIAZ
    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 : 38
    Points
    38

    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
    Nouveau Membre du Club
    Homme Profil pro Michel DIAZ
    Consultant en développement
    Inscrit en
    septembre 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Nom : Homme Michel DIAZ
    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 : 38
    Points
    38

    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 :
    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
    Candidat au titre de Membre du Club
    Inscrit en
    août 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : août 2007
    Messages : 74
    Points : 13
    Points
    13

    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 ???

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •