デルファイHTTPサーバー

ユニットUnit1は、

インターフェース

用途
  Winapi.Windows、Winapi.Messages、System.SysUtils、System.Variants、System.Classes、Vcl.Graphics、
  Vcl.Controls、Vcl.Forms、Vcl.Dialogs、IdContext、IdCustomHTTPServer、
  Vcl.StdCtrls、IdBaseComponent、IdComponent、 IdCustomTCPServer、IdHTTPServer。

入力
  TForm1 = クラス(TFormは)
    IdHTTPServer1:TIdHTTPServerと、
    btnStart:TButtonの。
    btnStop:TButtonの。
    edtIp:TEDIT。
    edtPort:TEDIT。
    edtRootDir:TEDIT。
    LBL1:TLabel; 
    LBL2:TLabel; 
    LBL3:TLabel; 
    edtIndex:TEDIT。
    mmo1:TMemoオブジェクト。
    手順btnStartClick(送信者:TObjectを);
    手順btnStopClick(送信者:TObjectを);
    手順IdHTTPServer1CommandGet(AContext:TIdContext; 
      ARequestInfo:TIdHTTPRequestInfo; AResponseInfo:TIdHTTPResponseInfo)。
    手順FormCreate(送信者:TObjectを);
  プライベート
    { プライベート宣言} 
  公共
    { 公開宣言} 
  エンド

VAR 
  をForm1:TForm1; 

実装

{ $ R * .DFM } 

// IdGlobalを使用しています。// IndyTextEncoding_UTF8 


VAR 
  ROOTDIR:文字列; 
  URL:文字列; 

手順TForm1.btnStopClick(送信者:TObjectを);
開始
  IdHTTPServer1.Activeを: = falseは、
エンド; 

手順TForm1.FormCreate(送信者:TObjectを);
開始
  edtip.Textを: = ' 127.0.0.1 ' 
  edtport.Text: = ' 8008 ' ; 
  edtIndex.Text: = ' A.TXT ' ; 

  btnStartClick(btnstart)。
エンド; 

手順TForm1.btnStartClick(送信者:TObjectを);
始める
  ならば IdHTTPServer1.Activeはその後、終了。

  試し
    IdHTTPServer1.Bindings.Clear; 
    // バインドするポート、これを設定する必要があり、これが結合する実際のポートがあり、 
    IdHTTPServer1.DefaultPort:= strtoint(TRIM(edtport.Text)); 
    IdHTTPServer1.Bindings.Add。 IP: = TRIM(edtip.Text);
     // サーバの起動 
    IdHTTPServer1.Activeを:= 真;
   除く
    ShowMessage(' 開始できませんでした!' );
   エンド; 

  // ROOTDIR:= TRIM(edtrootdir.Text); 
  ROOTDIR:= ExtractFilePath( Application.ExeName); 
  URL: = ' HTTP:// ' + TRIM(edtip.Text)+ TRIM(edtport.Text)+ ' / ';
   // ブラウザがhttp://127.0.0.1:8008/index.html?a=1&b=2要求
終了


手順TForm1.IdHTTPServer1CommandGet(AContext:TIdContext; 
  ARequestInfo:TIdHTTPRequestInfo; AResponseInfo:TIdHTTPResponseInfo); 
VAR 
 LFilename:文字列; 
 LPathname:文字列; 
 中文:文字列;
 始める
  // ブラウザ要求http://127.0.0.1:8008/index.html?a=1&b=2 
   // ARequestInfo.Documentリターン/index.htmlが
   // リターンARequestInfo.QueryParams 2. IB = = 
   // ARequestInfo.Params.Values [ '名前']受信取得、オーバー後のデータ

   @ 1つのパラメータを取得する
  //   mmo1.Lines.Clear。
  //   mmo1.Lines.Add(ARequestInfo.Document)。
  //   mmo1.Lines.Add(arequestinfo.Params.Values [ 'A'])。
  //   mmo1.Lines.Add(arequestinfo.Params.Values [ 'B'])。

   // 2 Webサーバ发文件
//   LFilename:= ARequestInfo.Document。
//   もしLFilename = '/'を
//   開始
//     LFilename:=「/'+trim(edtIndex.Text)。
//   終了。
//   LPathname:= ROOTDIR + LFilename。
//   FILEEXISTS IF(LPathname)を
//   開始
//       AResponseInfo.ContentStream:= TFileStream.Create(LPathname、fmOpenRead + fmShareDenyWrite); //发文件
// 
// 
//   開始
// 
//     AResponseInfo.ContentType:= 'テキスト/ HTML;のcharset = GB2312'; 
//     AResponseInfo.ResponseNo:= 404; 
//     AResponseInfo.ContentText:= 'が見つかりません' + ARequestInfo.Document ; 
//     //が見つかっ、3つの文字はバグと考えられ、文字化け
//   ; END 

  // 。発行3 HTMLドキュメント
@     = 'text / htmlの;のcharset = GB2312';:AResponseInfo.ContentType 
//    / / AResponseInfo.WriteContent; 
//    AResponseInfo.ContentText:= '<HTML> <BODY> dsdddddこんにちは良いヘクタール</ BODY> </ HTML>'; 

  // 4 xmlファイルが発行した。 
     AResponseInfo.ContentTypeを:= " text / xmlで;文字セット= GB2312 "; 
     AResponseInfo.ContentText: = ' <?xmlのバージョン= "1.0"エンコード= "UTF-8"> ' 
     + ' <学生> ' 
     + ' <学生のセックス= "男性"> <名前> ' + ' ' + " </名前> <年齢> 14 </年齢> </学生> ' 
     + ' <学生のセックス= "女"> <名前> BB </名前> <年齢> 16 </年齢> </学生> ' 
     + ' </学生> " ;



ファイル名= " '+名+'" '; 
} 
   //; AResponseInfo.ServeFile(AContext、 'A.TXT')
   // これだけはダウンロード1とフレームを果たし


 @ 6は、IISで置き換えられる
@   AResponseInfo.Server:= 'IIS / 6.0'; 
//   AResponseInfo.CacheControl:= 'キャッシュ-NO '; 
//   AResponseInfo.Pragma:=' NO-キャッシュ「; 
//   AResponseInfo.Date:=Now; 

エンド; 

エンド

おすすめ

転載: www.cnblogs.com/tobetterlife/p/12171472.html