vba로 주소지를 이용하여 경도,위도 좌표를 얻어오는 api통신을 시도하고 있습니다.
postman으로는 response에 데이터가 제대로 들어오는데, vba에서는 request에 대한 상태값은 200이고 response도 들어오기는 하지만, 제대로된 documents값을 받아오지 못하고 있습니다.
결과: {“documents”:,“meta”:{“is_end”:true,“pageable_count”:0,“total_count”:0}}
포스트맨에서는 documents값이 제대로 들어오고요. 혹시나 url에 들어가는 주소의 띄어쓰기나 한글때문에 문제가 될까하 url encoding도 해 보았지만 결과는 동일합니다. 왜 그런걸까요…?
사용했던 코드는 하기와 같습니다.
Type CoordinateInfo
addressName As String
x As String
y As String
End Type
Sub GetDistances()
Dim origin As CoordinateInfo
origin = GetCoordinate(“판교역로 166”)
End Sub
Function GetCoordinate(address As String) As CoordinateInfo
Dim http
Set http = CreateObject("MSXML2.XMLHTTP")
Dim URL As String
URL = "https://dapi.kakao.com/v2/local/search/address?&query=" & address
Debug.Print "URL : " & URL
' HTTP GET 요청
http.Open "GET", URL, False
http.setRequestHeader "Authorization", "KakaoAK 내API_KEY넣음" 'postman으로 확인
http.setRequestHeader "Content-type", "application/json"
http.send
Dim statusCode As Long
statusCode = http.Status
Debug.Print "HTTP Status Code: " & statusCode
Dim response As String
response = http.ResponseText
Debug.Print "Response: " & response ' API 응답 출력
Dim json As Object
Set json = JsonConverter.ParseJson(response)
Dim coord As CoordinateInfo
If json("documents").Count > 0 Then
coord.addressName = json("documents")(1)("address_name")
coord.y = json("documents")(1)("y")
coord.x = json("documents")(1)("x")
Else
coord.addressName = address
coord.x = ""
coord.y = ""
End If
GetCoordinate = coord
End Function