gpt4 book ai didi

delphi - 如何在控制台应用程序中创建独立的 HTTPServer

转载 作者:行者123 更新时间:2023-12-01 19:31:06 32 4
gpt4 key购买 nike

我正在尝试使用 Delphi 7/indy(9) 组件(控制台应用程序,没有表单/应用程序)创建 HttpServer:

更新:带有无限循环的完整控制台示例。

program httpserver;
{$APPTYPE CONSOLE}

uses
IdHTTPServer, IdTCPServer, IdCustomHTTPServer;

Type
TCommandHandler= class
protected
procedure DoCommandGet(AThread: TIdPeerThread;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);

end;

{$R *.res}
var Server:TIdHTTPServer ;
CH:TCommandHandler;


procedure TCommandHandler.DoCommandGet(AThread: TIdPeerThread;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
AResponseInfo.ResponseText := '1234';
end;

begin
Server := TIdHTTPServer.Create(nil);
CH := TCommandHandler.Create;
Server.OnCommandGet :=CH.DoCommandGet;
Server.DefaultPort := 3030;
Server.Active := True;
while true do ;
end.

但是不行!我读了indy的源代码并在google上搜索没有成功。

更新:

  1. 没有循环,程序就结束了(当然……)
  2. 使用循环时,响应非常奇怪。(状态代码串联 - OK + 响应) http://www.image-share.com/upload/2766/294.png
  3. 使用 Form,响应就可以了。 http://www.image-share.com/upload/2766/295.png

也许是 indy 的错误/限制...

最佳答案

您在 AResponseInfo 中设置了错误的成员。您必须使用 ContentText 而不是 ResponseText (它将写在您发现的 ResponseCode 之后)

program httpserver;
{$APPTYPE CONSOLE}

uses
IdHTTPServer, IdTCPServer, IdCustomHTTPServer;

Type
TCommandHandler= class
protected
procedure DoCommandGet(AThread: TIdPeerThread;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);

end;

{$R *.res}
var Server:TIdHTTPServer ;
CH:TCommandHandler;


procedure TCommandHandler.DoCommandGet(AThread: TIdPeerThread;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
AResponseInfo.ContentText := '1234';
AResponseInfo.ContentType := 'text/plain';
end;

begin
Server := TIdHTTPServer.Create(nil);
CH := TCommandHandler.Create;
Server.OnCommandGet :=CH.DoCommandGet;
Server.DefaultPort := 3030;
Server.Active := True;
Readln;
end.

关于delphi - 如何在控制台应用程序中创建独立的 HTTPServer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27117361/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com