우체국에서 우편번호 조회 API 를 제공하고 있다.
http://biz.epost.go.kr/eportal/custom/custom_10.jsp?subGubun=sub_4&subGubun_1=cum_20  

php 에서 사용하다보면 잘 안 될 것이다. 인코딩을 utf-8, euc-kr 등으로 바꿔봐도 안될 것이다.

문제는 한글 검색시 헤더값에 accept-language: ko 값을 넘겨줘야 한다.
(우체국 openAPI 에서 저 값을 확인하는 듯 하다.)
$api_key = "우체국에서 받은 API KEY";
$epost_url = "http://biz.epost.go.kr/KpostPortal/openapi?regkey=$api_key&target=post&query=을지로3가"; 
 
$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: ko\r\n" 
  )
);

$context = stream_context_create($opts);

$fp = file_get_contents($epost_url , false, $context);
이런식으로 하면 되는데, php 버전 5.0.x 이상에서 사용가능하다.(file_get_contents 에서 context 사용)

php 버전 5.0.x 이하 버전인 경우, curl 이나, fsockopen 을 사용한다.

fsockopen 으로 열고, 
fputs($fp, "Accept-language: ko\r\n");
처럼 헤더를 넘겨준다.

curl 에서는
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept-language: ko") ); 
처럼 헤더를 넘겨준다.
 
반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  2개가 달렸습니다.
  1. 이걸로 많이 헤맸었는데, 또 하나의 해법을 발견하게 됐습니다! ^^
    저 또한 나름의 해법을 발견했는데 이걸 먼저 봤다면 개고생 안 해도 될 뻔 했습니다.
    제 글에 1day1님의 코드를 퍼갔습니다. 물론 출처는 밝혔고요. 괜찮겠지요?
    http://mytory.co.kr/?p=1284 제 글은 이거입니다.
  2. 큰 도움이 됐습니다. 감사합니다 :D
secret