프로젝트에 위치기반 서비스를 위해 네이버의 GeoLocation 서비스를 사용하려고 한다.
본인의 공인아이피를 입력하여 위치정보를 응답받을수 있다. 나는 행정동 정보, 위도, 경도가 필요했다.
GeoLocation 사용 방법이 공식 사이트에 잘 정리 돼 있다.
public void run(final String ip) throws Exception {
final String requestMethod = "GET";
final String hostName = "https://geolocation.apigw.ntruss.com";
final String requestUrl= "/geolocation/v2/geoLocation";
final Map<String, List<String>> requestParameters = new HashMap<String, List<String>>();
requestParameters.put("ip", Arrays.asList(ip));
requestParameters.put("ext", Arrays.asList("t"));
requestParameters.put("responseFormatType", Arrays.asList("json"));
SortedMap<String, SortedSet<String>> parameters = convertTypeToSortedMap(requestParameters);
String timestamp = generateTimestamp();
System.out.println("timestamp: " + timestamp);
String baseString = requestUrl + "?" + getRequestQueryString(parameters);
System.out.println("baseString : " + baseString);
String signature = makeSignature(requestMethod, baseString, timestamp, accessKey, secretKey);
System.out.println("signature : " + signature);
final String requestFullUrl = hostName + baseString;
final HttpGet request = new HttpGet(requestFullUrl);
request.setHeader("x-ncp-apigw-timestamp",timestamp);
request.setHeader("x-ncp-iam-access-key",accessKey);
request.setHeader("x-ncp-apigw-signature-v2",signature);
final CloseableHttpResponse response;
response = httpClient.execute(request);
final String msg = getResponse(response);
System.out.println(msg);
}
헤더 요청에 타임스탬프와 Access Key ID , Access Key ID 값과 Secret Key로 암호화한 서명인 signature를 작성하여 GET 요청한다. 다음과 같은 JSON응답이 나온다.
{
"returnCode": 0,
"requestId": "16248f0d-07ae-4a0f-847a-65c12a4faa0f",
"geoLocation":{
"country": "KR",
"code": "1162010100",
"r1": "서울특별시",
"r2": "관악구",
"r3": "봉천동",
"lat": 37.477962,
"long": 126.95346,
"net": "Korea Telecom"
}
}
이 geoLocation 정보를 토대로 위치정보 서비스를 하여 다음 포스트에 작성해보겠다.
'NCloud' 카테고리의 다른 글
[NCP] Mysql CloudDB 연결하기 (0) | 2023.10.21 |
---|---|
[NCloud] Spring에 Object Storage 파일업로드 Api 적용 (0) | 2023.10.07 |
[NCloud] Object Storage 사용해보기 (0) | 2023.10.07 |