Embarcadero RAD Studio XE

Indy Http Server

unit HttpServer;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IdHTTPServer, IdBaseComponent,
  IdComponent, IdCustomTCPServer, IdCustomHTTPServer, IdContext, Vcl.StdCtrls;

type
  TForm2 = class(TForm)
    IdHTTPServer1: TIdHTTPServer;
    Memo1: TMemo;
    procedure IdHTTPServer1CommandGet(AContext: TIdContext;
      ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.IdHTTPServer1CommandGet(AContext: TIdContext;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);

begin
  Memo1.Lines.Add( 'Http Command : '+ ARequestInfo.Command );

  try
      AResponseInfo.ContentType := 'application/json';
      AResponseInfo.ContentText := 'Hello from server'  + sLineBreak;
      AResponseInfo.ContentText := AResponseInfo.ContentText +
                                    '{' + sLineBreak +
                                    '  "ip": "192.192.241.1",'  +   sLineBreak +
                                    '  "hostname": "No Hostname",' +  sLineBreak +
                                    '  "city": null, ' + sLineBreak +
                                    '  "country": "TW",' + sLineBreak +
                                    '  "loc": "23.5000,121.0000",' + sLineBreak +
                                    '  "org": "AS1659 Taiwan Academic Network (TANet) Information Center"' + sLineBreak +
                                    '}';
      Memo1.Lines.Add('從Client端送來的參數資料:' + ARequestInfo.Params.Text);
  finally


  end;

end;

end.

重要資料型態:

AResponseInfo.ContentType 要傳給Http客戶端的資料型態 AResponseInfo.ContentText 要傳給Http客戶端的資料內容

ARequestInfo.Params 取得Http客戶端傳來的參數資料 ARequestInfo.Params.Text 參數整個資料字串 資料是以TStringList封裝, Param1=Data1 Param2=Data2 Param3=Data3 ...

要分別取上面的資料可用 ARequestInfo.Params.Values['Param1'],傳回Data1 ARequestInfo.Params.Values['Param2'],傳回Data2 …

Http記錄畫面

從瀏覽器存取http server