유돌이

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

2019. 9. 25. 11:25 델파이



 

델마당에 오랜만에 들어왔습니다.. 그때나 지금이나 유령회원 인데요...

네...


첨부된 코드는
우체국에서 제공하는 api를 사용하여 도로명 주소를 delphi에서 사용할수있게 수정하였습니다.

여기 저기 짜집기 한 코드입니다. 오랜만에 델파이를 하려니 왜이리 막히는지 ㅠㅠ

여기까지 잡설이고


먼저 data.go.kr에서 인증키를 받으시고 만드시면 될것 같습니다.

가입 로그인후 > openapi 메뉴 > 전체검색메뉴 > 도로명주소 으로 검색 > 오른쪽 활용신청 하시면 인증키를 받을수 있습니다.


아래 code부분에 넣어주시면 됩니다.
(참고로 첨부된 파일의 인증키는 작동하지 않습니다.)

delphi 7에서 테스트 되었습니다.

추가 내용입니다.
1. 인증키는 인증키 발급 프로그램을 받으셔서 압축해제후 아이디 패스워드를 넣고 인증키를 발급받으시면 됩니다.
2. 인증키 발급후 바로 사용하실수 없고 서버동기화시간 (1~3시간후) 이후에 사용 가능합니다. 

 

 

 

[소스]


procedure TForm1.Button6Click(Sender: TObject);
var

  Url , code ,searchword , searchoption : AnsiString ;

  Data    : TStringStream;
  DResult : TStringStream;
  Indy    : TIdHTTP;

  OuterRoot,EntryNode:IXmlNode;
  i,j:Integer;
begin

  memo1.clear;

  Data := TStringStream.Create('');
  DResult := TStringStream.Create('');
  Indy := TIdHttp.Create(nil);

  try

    // Indy를 이용해서 get
    //Indy.Request.ContentType := 'application/x-www-form-urlencoded'; // post방식
    Indy.Request.ContentType := 'application/json';

    code :=  HttpEncode(UTF8Encode('ojcKEw49AjaE1IT112E224449icpS/X7Ww8FMemV/2323+XJo9wbi56HQ=='));
    //data.or.kr에서 받은 인증키

    searchword := HttpEncode(UTF8Encode(edit1.text));
    if (RadioGroup1.ItemIndex = 0 )  then  begin
      searchoption :='&searchSe=road';
    end else if (RadioGroup1.ItemIndex = 1 )then begin
      searchoption :='&searchSe=dong';
    end;


    Url:= 'http://openapi.epost.go.kr/postal/retrieveNewAdressService/retrieveNewAdressService/getNewAddressList';

    Indy.get(Url+'?ServiceKey='+code+'&srchwrd='+searchword+searchoption,DResult);

    XMLDocument1.LoadFromStream(DResult);

    XMLDocument1.Active:=True;

    // stream 된 내용 파일 생성합니다.
    //XMLDocument1.SaveToFile('C:\Documents and Settings\tigger\바탕 화면\1.xml');

 

  OuterRoot := xmldocument1.DocumentElement;
  for i := 0 to OuterRoot.ChildNodes.Count -1 do
  begin
    if OuterRoot.ChildNodes[i].NodeName='newAddressList' then
      begin
        Memo1.Lines.Add(StringOfChar('-',20));
        Memo1.Lines.Add(OuterRoot.ChildNodes[i].NodeName +':');
        EntryNode := OuterRoot.ChildNodes[i];
        for j := 0 to EntryNode.ChildNodes.Count -1 do
        begin
          Memo1.Lines.Add( EntryNode.ChildNodes[j].NodeName + '-'  + EntryNode.ChildNodes[j].Text);
        end;
      end;
  end;

 

  finally
    // 메모리에서 해제
    Data.Free;
    DResult.Free;
    Indy.Free;

  end;


end; 

'델파이' 카테고리의 다른 글

유용한 레지스트리 정보  (0) 2019.09.26
시간차이 계산.  (0) 2019.09.25
XE에서 MySQL 연결오류 및 한글문제 해결  (0) 2019.09.24
E1026 File not found: Controls.res  (0) 2019.09.24
Virtual Key Codes  (0) 2019.09.23
posted by 유돌이