Bonjour à tous,
A la fin de mes recherches, je publierai un petit topo sur la construction d'un client-serveur de la "vraie vie", car je trouve qu'il y a plein d'écueils. Et finalement, ce n'est pas si simple.
Dans cette attente, je vous livre un blocage que je rencontre :
Un client FMX (sous Windows 64, dev en 10.4) fait appel à un serveur Linux sous Apache (dev en 10.4) :
Exactement 1 fois sur 2 le client reçoit une réponse : The specified session has expired due to inactivity or was an invalid Session ID
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 uses ClientClassesUnit1; var Serveur : TServerMethods1Client; procedure TFenetrePrincipale.EvOnCreate(Sender: TObject); begin Serveur := TServerMethods1Client.Create(Connexion); end; procedure TFenetrePrincipale.Clicbouton(Sender: TObject); var reponse : string; begin try reponse := Serveur.ReverseString(Edit1.Text); except on E : Exception do begin ShowMessage(e.Message); end; end; ShowMessage(reponse); end;
L'appel est en https vers le serveur qui est un module Apache libmod_webbroker.so.
Coté serveur, j'ai pris l'exemple suggéré par Embarcadero, j'ai laissé toutes les options par défaut. Donc DSServerClass1 est en LiveCycle = session
En faisant une écoute réseau, on voit que :
1er appel du client pas de "pragma" dans la stack réseau.
Réponse du serveur : Pragma: dssession=393481.994277.152743,dssessionexpires=1200000. La réponse est correcte du serveur.
2ème appel du client, présence de " Pragma: dssession=393481.994277.152743 " dans la stack
Réponse du serveur : HTTP/1.1 403 Forbidden:
The specified session has expired due to inactivity or was an invalid Session ID
Est-ce que quelqu'un saurait dire pourquoi 1 fois sur 2 le client reçoit une réponse : The specified session has expired due to inactivity or was an invalid Session ID ?
Cordialement
Carmichael
Partager