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

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


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


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

コメント