본문 바로가기

Delphi/꿀팁

우체국 API로 주소 검색하기

procedure SearchAddress(AAddress: string);
  function UrlEncode(ASrc: string): string;
  var
    I: Integer;
    sTemp: AnsiString;
  begin
    Result := '';

    sTemp := AnsiString(ASrc);
    for I := 1 to Length(sTemp) do begin
      if not (sTemp[I] in ['A'..'Z', 'a'..'z', '0'..'9']) then begin
        if sTemp[I] = ' ' then
          Result := Result + '+' //공백은 %20 대신 +로 변환
        else
          Result := Result + '%' + IntToHex(Ord(sTemp[I]), 2);
      end else begin
        Result := Result + sTemp[I];
      end;
    end;
  end;
  
const
  KEY = 'xxxxxxxxx'; //우체국에서 발급받은 키
var
  sURL: string;
  Stream: TStringStream;
begin
  sCurrentPage := '1'; //조회할 페이지 번호
  sCountPerPage := '20'; // 1회 조회에 가져올 주소 개수

  sURL := 'http://biz.epost.go.kr/KpostPortal/openapi?' +
          'regkey=' + KEY + '&' +
          'target=postNew&' + //도로명주소
          'query=' + UrlEncode(AAddress) + '&' +
          'countPerPage=' + sCountPerPage + '&' +
          'currentPage=' + sCurrentPage;

  Stream := TStringStream.Create('', TEncoding.UTF8);
  
  try
    IdHTTP1.Get(sURL, Stream);
    Memo1.Text := Stream.DataString;
  finally
    Stream.Free;
  end;
end;

 

우체국 API를 사용하여 주소를 가져옵니다. 

※XE7에서 테스트되었습니다.

API 참조 -> https://biz.epost.go.kr/ui/index.jsp

2019.12.24 - [Delphi/꿀팁] - XML 파싱하기 - 1

2020.08.10 - [Delphi/꿀팁] - XML 파싱하기 - 2

반응형