자작 | IdHTTP로 POST전송하기
페이지 정보
작성자 DLL 작성일16-08-07 17:59 조회27,585회 댓글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 테스트용으로 만들어 놨더니, 광고충들이 똥을 겁나게 싸놨네~~