Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > Delphi > Composants VCL
Composants VCL Utilisation des différents composants VCL (Visual Component Library)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 30/07/2012, 19h10   #1
hohorga
Membre du Club
 
Homme Michel DIAZ
Consultant en développement
Inscription : 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 : 42
Points : 42
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 !
hohorga est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2012, 11h40   #2
ShaiLeTroll
Expert Confirmé Sénior
 
Avatar de ShaiLeTroll
 
Homme
Développeur C++\Delphi
Inscription : juillet 2006
Messages : 9 195
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : France

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

Informations forums :
Inscription : juillet 2006
Messages : 9 195
Points : 13 245
Points : 13 245
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é !
ShaiLeTroll est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 31/07/2012, 16h10   #3
hohorga
Membre du Club
 
Homme Michel DIAZ
Consultant en développement
Inscription : 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 : 42
Points : 42
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 :
hohorga est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2012, 16h18   #4
hohorga
Membre du Club
 
Homme Michel DIAZ
Consultant en développement
Inscription : 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 : 42
Points : 42
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.
hohorga est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2012, 12h15   #5
vin100H
Candidat au titre de Membre du Club
 
Inscription : août 2007
Messages : 74
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 74
Points : 13
Points : 13
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 ???
vin100H est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 09h35.


 
 
 
 
Partenaires

Hébergement Web