Delphi/C++Builder の TIdHTTPServer で POST受信

TIdHTTPServer で Postデータを受信しようと、HTMLを作成


TIdHttpServer の OnCommandGet イベントで、ARequestInfo からデータを取得しようとすると
  1. procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);  
  2. begin  
  3.     if SameText(ARequestInfo.Command, 'POST'then begin  
  4.         ARequestInfo.PostStream // ← nil  
  5.         ARequestInfo.Params // ← こっちにデータが入っている  
  6.     end;  
  7. end;  
それじゃ Getの時と同じ? PostStream の役目は何なのかということで
multipart の記述で、Post を行う


PostStream へデータが入って OnCommandGet が呼び出される
  1. procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);  
  2. begin  
  3.     if SameText(ARequestInfo.Command, 'POST'then begin  
  4.         ARequestInfo.PostStream // ← マルチパートでデータが入っている  
  5.         ARequestInfo.Params // ← こちらは中身がない  
  6.     end;  
  7. end;  
中身を確認してみるには
  1. TMemoryStream(ARequestInfo.PostStream).SaveToFile('c:\post.txt');  

コメント