2

環境:Ubuntu 12.04 LTS、Indy 10.5.9 rev 4885、Lazarus 1.0.4 /FPC2.6.0。

私の単純なTIdHTTPServerテストプログラムでは、Webブラウザーは、「Hello world!」であるはずの完全な応答ではなく、最後の文字(「!」)のみを表示します。

関数ToBytes(IdGlobal.pasの6059行目)では、渡されたAValueパラメーターのテキストはまだ正しく、ASrcEncodingはTIdASCIIEncodingであり、ADestEncodingは「ISO-8559-1」であることがわかります。行6061(LBytes:= TIdTextEncoding.Convert(ASrcEncoding、ADestEncoding、LBytes);)を実行した後、LBytes配列には#33とそれに続くゼロが含まれます。

私のサンプルプロジェクト:

program MyHTTPServer;

uses
  cthreads,
  IdHTTPServer, IdCustomHTTPServer, IdContext, IdSocketHandle, IdGlobal,
  SysUtils;

type
  TMyServer = class (TIdHTTPServer)
  public
    procedure InitComponent; override;
    procedure OnGet(AContext: TIdContext;
    ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
  end;

procedure Demo;
var
  Server: TMyServer;
begin
  Server := TMyServer.Create(nil);
  try
    Server.Active := True;
    WriteLn('Hit any key to terminate.');
    ReadLn;
  finally
    Server.Free;
  end;
end;

procedure TMyServer.InitComponent;
var
  Binding: TIdSocketHandle;
begin
  inherited;

  OnCommandGet := OnGet;

  Bindings.Clear;
  Binding := Bindings.Add;
  Binding.IP := '127.0.0.1';
  Binding.Port := 8080;
  Binding.IPVersion := Id_IPv4;
end;

procedure TMyServer.OnGet(AContext: TIdContext;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin    
  AResponseInfo.ContentText := 'Hello world!';
end;

begin
  IdGlobal.GIdIconvUseTransliteration := True;

  Demo;
end.
4

1 に答える 1

1

この問題は、SVNトランクリビジョン4889で修正されています。

于 2012-12-16T11:04:11.097 に答える