음산협 API 호출하여 XML파싱
VO 객체
import lombok.Getter; import lombok.Setter; import lombok.ToString; // 롬복을 이용함 @Getter @Setter @ToString public class UCIAlbumVO { private String uciCode; // UCI그룹코드 private String distAlbumCode; // 앨범코드(자사 앨범관리코드) private String albumTitle; // 앨범명 private String repSingerName; // 앨범가수명 private String releaseDate; // 발매일 private String distributor; // 유통사 private String country; // 국가코드 private String producer; // 제작사 private String barCode; // 바코드(UPC) private String distMusicCode; // 곡 코드(자사 곡 관리코드) private String musicTitle; // 곡명 private String cdNo; // 디스크번호 private String trackNo; // 트랙번호 private String singerName; // 곡명 private String genre; // 장르 private String feature; // 피처링 private String composer; // 작곡가 private String lyricist; // 작사가 private String arranger; // 편곡가 private String player; // 연주자 private String playTime; // 재생시간 private String isrc; // ISRC }
API호출 메서드
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.type.TypeFactory; import com.fasterxml.jackson.dataformat.xml.XmlMapper; import org.junit.Test; import org.w3c.dom.Document; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLConnection; import java.util.HashMap; import java.util.List; import java.util.Map; import static org.junit.Assert.assertNotNull; public class UCITest { @Test public void getUCIAlbum() { // 접속할 URL String baseUrl = "http://uci.k-pop.or.kr/api/meta.do"; // 파라미터 세팅 Map<String, String> param = new HashMap<>(); param.put("albumCode", "1000005446740"); String parameters = ""; for (String key : param.keySet()) { if ("".equals(parameters)) { parameters += key + "=" + param.get(key); } else { parameters += "&" + key + "=" + param.get(key); } } OutputStream outputStream; BufferedReader reader = null; Document document = null; try { URL targetUrl = new URL(baseUrl); URLConnection urlConn = targetUrl.openConnection(); HttpURLConnection httpURLConn = (HttpURLConnection) urlConn; httpURLConn.setRequestProperty("Content-type", "application/x-www-form-urlencoded"); httpURLConn.setRequestMethod("POST"); httpURLConn.setDoInput(true); httpURLConn.setDoOutput(true); httpURLConn.setUseCaches(false); httpURLConn.setDefaultUseCaches(false); outputStream = httpURLConn.getOutputStream(); outputStream.write(parameters.getBytes("utf-8")); outputStream.flush(); outputStream.close(); // Jackson XML 파서를 이용하여 VO객체로 변환한다. ObjectMapper xmlMapper = new XmlMapper(); TypeFactory typeFactory = xmlMapper.getTypeFactory(); InputStream inputStream = httpURLConn.getInputStream(); List<UCIAlbumVO> uciAlbumVOList = xmlMapper.readValue(inputStream, typeFactory.constructCollectionType(ArrayList.class, UCIAlbumVO.class)); for (UCIAlbumVO albumVO : uciAlbumVOList) { System.out.println(albumVO); } assertNotNull(uciAlbumVOList); } catch (IOException e) { e.printStackTrace(); } } }
최신 댓글