Ciao a tutti,
premetto che non ho familiarità con l'utilizzo dei web server e purtroppo il primo server a cui sto cercando di collegami mi sta rendendo la vita un po' difficile.
Il mio web server è formato da tre servizi: SYSTEM, QUEUE, STORY, ognuno di essi ha il proprio wsld che fanno riferimento a tre diversi indirizzi:
../inewswebservice/services/inewssystem
../inewswebservice/services/inewsqueue
../inewswebservice/services/inewsstory
per prima cosa bisogna autenticarsi e creare una sessione tramite inewssystem e la cosa va a buon fine.
procedure TForm1.FormCreate(Sender: TObject);
var
C: Connect;
Resp: ConnectResponse;
begin
h1 := THttpRio.Create(nil);
h2 := THttpRio.Create(nil);
iNews := GetINEWSSystemPortType(true, '',h1);
C := Connect.Create;
Resp := ConnectResponse.Create;
try
C.Username := 'xx';
C.Password := 'xxx';
C.Servername := 'xxxx';
try
Resp := iNews.Connect(C);
except
Memo1.Lines.Add('impossibile connettersi a : ' + C.Servername);
end;
finally
Resp.Free;
C.Free;
end;
end;
il problema nasce quando devo utilizzare una funzione presente in inewsqueue
procedure TForm1.Button1Click(Sender: TObject);
var
Q : SetCurrentQueue;
QR: SetCurrentQueueResponse;
begin
Queue := GetINEWSQueuePortType(true, '', h2);
Q := SetCurrentQueue.Create;
Q.QueueFullName := 'PATH.NAME';
try
Queue.SetCurrentQueue(Q);
finally
Q.Free;
end;
end;
A questo punto il server mi restituisce “Fault occurred while processing”.
Questo errore è causato dal fatto che il secondo servizio non riconosce la sessione aperta.
Ho provato a replicare le richieste a mano con ARC, inserendo nel body il codice xml generato da Delphi, e lì tutto va a buon fine.
Credo che il problema stia nel fatto che una volta aperta la sessione vengono scaricati due cookie con i dati della sessione stessa e a questi dovrebbe avere accesso anche il secondo componente THttpRIO (h2) ma probabilmente questo non avviene.
In rete non ho trovato nulla a riguardo, non ho trovato il modo di impostare a mano il percorso dei cookie e non so nemmeno se si possa fare.
Avete qualche suggerimento?
Grazie in anticipo,
Andrea.