<?php
header('Content-Type: text/html; charset=UTF-8');
$ch = curl_init();
$url = "https://dapi.kakao.com/v2/local/search/address.json?query=".urlencode("여긴 주소!");
$headers[] = "Authorization: KakaoAK xxxxxxx여긴 토큰xxxxxxxx";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($ch);
curl_close($ch);
$response = json_decode($output);
print_r($response);

주소를 토대로 위도와 경도를 갖고 오는 api를 사용하는 예제(developers.kakao.com/docs/latest/ko/local/dev-guide#address-coord)입니다.

위에 있는 아주 평범한 방법으로 했지만 값이 안 나옵니다.

그런데 print_r($output)은 값이 나옵니다. 다만 값이 나오지만 위 이미지처럼 갖고 가지 말라고 헤더까지 포함시켜서 저렇게 나옵니다.

이런 경우는 헤더만 잘라 버리고 갖고 오면 됩니다.

<?php
header('Content-Type: text/html; charset=UTF-8');
$ch = curl_init();
$url = "https://dapi.kakao.com/v2/local/search/address.json?query=".urlencode("여긴 주소!");
$headers[] = "Authorization: KakaoAK xxxxxxx여긴 토큰xxxxxxxx";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($ch);
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
curl_close($ch);
$remove_result = substr($output, $header_size);
$result = json_decode($remove_result);
print_r($result);
echo $result->documents[0]->x;

$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);

$remove_result = substr($output, $header_size);

먼저 헤더 길이를 갖고 와서 출력된 결과물에서 헤더 길이만큼을 잘라 버리면 됩니다.

 

댓글 0