我想知道如果我可以有onCommandGet事件,我可以將客戶端請求重定向到另一個主機/端口,獲取TIdHTTP(客戶端)所需的信息並通過AResponseInfo發送回客戶端?是否有可能在TIdHTTPServer onCommandGet事件中使用TIdHTTP(客戶端)重定向請求並返回響應?
它shoold是這樣的:
procedure HTTPServerCommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
client : TIdHTTP;
begin
client := TIdHTTP.Create();
try
client.Request := ARequestInfo; // or somehow put the ARequestInfo in the client
... // in here I don't know how to make the GET, POST, HEAD or other
... // (if possible) request to 'some_host:some_port'
AResponseInfo := client.Response; // or somehow put the client Response in AResponseInfo
finally
FreeAndNil(client);
end;
end;
形式上你應該返回'AResponseInfo.Redirect('redir_host:port');'並讓客戶端自己處理重定向。但我覺得你的問題的原因可能是你想在服務器上做一些「隱藏」到客戶端的東西,在那裏正式的重定向不是一種選擇。只是爲了讓你知道... – TLama
@TLama是的 - 你是對的 - 而其中一個「隱藏」的東西是實際的主機:端口從我將收集客戶需要的信息並通過它發回給他的信息AResponseInfo - 讓他覺得他從他剛輸入的網址得到它 –