태그 보관물: ShortURL

Naver ShortURL API 구현

단축URL을 사용하기 위해서 찾아본 결과 Bit.ly네이버 Open API-단축URL을 비교해본 결과 공짜로 사용할 때 하루의 사용할 수 있는 건수가 많은 네이버 Open API를 선택(하루 25,000건)

순수하게 단축URL을 만드는 것이 아니라 해당 링크에 대한 통계 데이타가 중요하다면 네이버 Open API 보다는 Bit.ly 사용을 추천한다.

Naver Open API - 단축URL

public class NaverShortUrlUtils {
	private static Logger logger = LoggerFactory.getLogger(NaverShortUrlUtils.class);
	
	// Naver ShortURL API
	private static String SERVER_URL = "https://openapi.naver.com/v1/util/shorturl.json";
	
	// CLIENT_ID
	@Setter
	protected String CLIENT_ID = "NAVER_DEV_CLIENT_ID";
	// CLEINT_SECRET_KEY
	@Setter
	protected String CLIENT_KEY = "NAVER_DEV_CLIENT_SECRET_KEY";
	
	@SuppressWarnings("unchecked")
	public String shorten(String url){
		String ret = null;
		HttpMethod method = null;
		HttpClient client = new HttpClient();
		method = new PostMethod(SERVER_URL);
		method.setRequestHeader("X-Naver-Client-Id", CLIENT_ID);
		method.setRequestHeader("X-Naver-Client-Secret", CLIENT_KEY);
		
		NameValuePair[] parameters = {
			new NameValuePair("url", url),
		};
		method.setQueryString(parameters);
		
		try{
			client.executeMethod(method);
			String responseJson = method.getResponseBodyAsString();
			Map item = new ObjectMapper().readValue(responseJson, HashMap.class);
			if(!ObjectUtil.isNull(item) && ((String)item.get("code")).equals("200")){
				Map data = (Map) item.get("result");
				ret = (String) data.get("url");
				logger.info("{} -> {} Convert SHORTEN URL", url, ret);
			}else{
				String errorMessage = item.get("code") + " - " + item.get("message");
				logger.error(errorMessage);
			}
		}catch (HttpException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		return ret;
	}
}