[Delphi] Indy 컴포넌트 중 idHTTP 사용법

idHTTP

Delphi 컴포넌트중 Indy 컴포넌트는 정말 사용하기 편리하고 
필요한 기능은 다 구현이 되어 있습니다. 
그중 idHTTP사용법을 소개합니다. 

1. POST 파일 전송 예제
Indy에 포함되어 있는 TidMultiPartFormData를 이용하여 웹페이지에
POST  전송/파일전송 하는 방법입니다.
크게 어려운 부분이 아니라서 소스코드로 대체 합니다.

procedure TFmMain.Button1Click(Sender: TObject);
var
  DataStream : TidMultiPartFormDataStream;
  rs: TMemoryStream;
begin
  DataStream := TIdMultiPartFormDataStream.Create;
  rs := TMemoryStream.Create;
  try
    idHTTP1.Request.ContentType := DataStream.RequestContentType;
    DataStream.AddFormField(''logid'',Trim(Edit1.Text));
    DataStream.AddFormField(''passwd'',Trim(Edit2.Text));
    // Post 로 apple_logid 와 apple_passwd 값을 전송합니다.
    DataStream.AddFile(''upfile'',''e:\\downlogo.bmp'',''application/octet-stream'');
    // upfile 변수에 ''e:\\downlogo.bmp'' 파일 을 추가 합니다.. 
    DataStream.Position := 0;
    try
      IdHTTP1.Post(''test.php'',DataStream,rs);
    finally
      ShowMessage(PChar(rs.Memory));
    end;
  Finally
  DataStream.Free;
  end;
end;

2. 간단하게 idHTTP를 이용한 POST 전송

// 전달할 인수 설정
argv := TStringlist.Create;
argv.Add(''TrustSvc=''+Send_XML);
//호출
ret := IdHTTP1.Post(url, argv);

파일을 포함하지 않고 그냥 
변수값을만 URL 로 POST 전송하는 간단한 방법 입니다. 

3. idHTTP를 사용하여 페이지 소스 가져오기

str := idHTTP.Get("가져올URL");

4. idHTTP를 사용하여 URL 이미지 가져오기

procedure TForm1.GetWebImage(AImageURL: String);
var
  ImageStream : TMemoryStream;
  HTTP        : TIdHTTP;
  JpgImage    : TJPEGImage;
begin
  if AImageURL = '' then Exit;
  
  ImageStream := TMemoryStream.Create;
  HTTP := TIdHTTP.Create(nil);
  try
     HTTP.Get(AImageURL, ImageStream);
     ImageStream.Position := 0;
     JpgImage := TJPEGImage.Create;
     try
        JpgImage.LoadFromStream(ImageStream);
        // 이미지를 표시할 컴포넌트
        Image1.Picture.Assign(JpgImage);
     finally
        JpgImage.Free;
     end;
  finally
     ImageStream.Free;
     HTTP.Free;
  end;
end;


댓글

이 블로그의 인기 게시물

2025년 7월 다이어리

1. 대학교 축제 전시 프로젝트