IdHTTP로 POST전송하기 > 델파이 자료실

본문 바로가기

회원로그인

델파이 자료실

자작 | IdHTTP로 POST전송하기

페이지 정보

작성자 DLL 작성일16-08-07 17:59 조회26,633회 댓글1건

본문

{================}

{ POST 전송 처리 }

{================}

Function Send_POST(AURL: String; AData : TStringList): String;

Var

  LStream: TMemoryStream;

  RStream: TStringStream;

Begin

  LStream := TMemoryStream.Create;

  RStream := TStringStream.Create;

  Try

    Try

      WB.Post(AURL, AData ,LStream);

      LStream.Position := 0; RStream.Position := 0;

      RStream.CopyFrom(LStream,LStream.Size);

      Result := RStream.Encoding.GetEncoding(949).GetString(RStream.Bytes,0,RStream.Size);

    Finally

      LStream.Free; RStream.Free;

    End;

  Except On E : Exception Do Begin

    Log.Lines.Add(DateTimeToStr(Now()) + ' ▶' + '오류발생  : ' + E.Message);

  End;End;

End;

 

Send_POST 호출시, 

AURL -> POST 전송될 페이지 주소. 

AData -> POST 전송할 데이터 값.

 

AData는 스트링리스트이며, 값들은

AData.Add('mem_id=' + Edt_mem_id.Text);

 

 * 형식으로 웹상 포스트 되는 값들을 모두 Add 합니다.

 * 함수 호출후 리설트를 받으면 POST 전송후 처리값이 나옵니다.

 * 오류발생시 Log라는 TMemo로 시간+오류메시지가 나오게 됩니다.

 

주의할 점 : 웹서버가 대부분 레퍼러를 체크하기 때문에, 레퍼러값을 함께 보내주셔야 합니다.

드물게는 User-Agent (에이전트)값도 체크를 합니다.

WB.Request.UserAgent := '인디 라이브러리가 아닌 브라우져의 에이전트값~'; 

WB.Request.Referer := AURL; {보통 전송하는 주소를 넣거나 최상위 도메인주소를 넣으면 됩니다.}

 

문자열이 외계어로 리턴되실수도 있는데, 이는 utf인코딩이나 euckr인코딩일 경우에 그렇더군요.

그래서 상황 봐가면서 GetEncoding(949), GetEncoding(65001) 인코딩처리를 골라서 하시면 됩니다.

 

  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기

댓글목록

DLL님의 댓글

DLL 작성일

아오~ 봇들이 광고글을 너무 떡칠을 해 놔서 자료를 모두 삭제하고, 리셋 시킴 ㅡ,.ㅡ;
필터링 해둘 껄ㅡㅡ 6년 전에 SEO 테스트용으로 만들어 놨더니, 광고충들이 똥을 겁나게 싸놨네~~


접속자보기 오늘(28), 어제(58), 최대(219), 전체(29,654)      단축주소 :cTo.kr 무료도메인 :c1o.kr,cDo.kr

▲상단으로

http://DLL.kr (모바일보기)