[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 !
Partager