[SpringBoot] 오픈 API 파싱하기

임유빈·2022년 8월 29일
post-thumbnail

원하는 오픈 API 클릭 > 활용신청 클릭

활용 목적에 취업용 포트폴리오 작성 후 상세기능정보선택 체크 > 라이선스표시 동의 후 확인

상세보기 클릭 후 일반 인증키 (Encoding)

활용신청 상세기능정보에서 미리보기 > type에서 json으로 변경

미리보기 링크 접속하여 복사하여 인텔리제이에 코드 작성 (마지막 타입 json으로 변경)


인텔리제이 접속 후 코드 작성

Service에 apiTest 패키지 생성 후 클래스 작성

(코드는 맨 밑에 작성)

Spring key와 URL 값 변경해주기.

테스트 모듈에 Application 들어가기



apiTest 코드 작성

@Service
public class apiTest {

    public void testAPI() {
        String result = readAPI();

//        String jsonStr = gson.toJson(result);
//        System.out.println(jsonStr);

        Gson pretty = new GsonBuilder().setPrettyPrinting().create();
        String element = pretty.toJson(result);

        System.out.println(element);

    }

    public String readAPI() {
        String key = "%2Fk49W4UhNTuGlvyhZ6NCaHVhV1%2BBp0wbhWy0YjmvKgHQSFbVPwQqzw4ppSYg8O9ubHyLPYi8N%2F0e4yGvEQKGug%3D%3D";

        // 파싱한 데이터를 저장할 변수
        String bfResult = "";
        String brResult="";
        StringBuilder sb=new StringBuilder();

        try {

            URL url = new URL("http://apis.data.go.kr/B551177/BusInformation/getBusInfo?serviceKey="
                    + key + "&numOfRows=10&pageNo=1&area=1&type=json");

            BufferedReader bf;
            bf = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));
            bfResult = bf.readLine();

            System.out.println(bfResult.length());

            HttpURLConnection con =(HttpURLConnection)url.openConnection();
            BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(),"UTF-8"));


            while((brResult=br.readLine())!=null) {
                sb.append(brResult);
                System.out.println(brResult);
            }
            br.close();
            con.disconnect();
        }catch(Exception e) {
            e.printStackTrace();
        }
        return sb.toString();
    }
}

Application 코드 작성


@SpringBootTest
class TestApplicationTests {

    @Autowired
    apiTest apiTest_1;
    @Test
    void apiTest_2() {
        apiTest_1.readAPI();
    }
    @Test
    void contextLoads() {
    }
}



0개의 댓글