반응형
 @GetMapping("/GetkobisData")
    public String callAPI() throws JsonProcessingException {
 
        HashMap<String, Object> result = new HashMap<String, Object>();
 
        String jsonInString = "";
 
        try {
 
            HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
            factory.setConnectTimeout(5000); //타임아웃 설정 5초
            factory.setReadTimeout(5000);//타임아웃 설정 5초
            RestTemplate restTemplate = new RestTemplate(factory);
 
            HttpHeaders header = new HttpHeaders();
            HttpEntity<?> entity = new HttpEntity<>(header);
 
            String url = "http://www.kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchDailyBoxOfficeList.json";
 
            UriComponents uri = UriComponentsBuilder.fromHttpUrl(url+"?"+"key=430156241533f1d058c603178cc3ca0e&targetDt=20120101").build();
 
            //이 한줄의 코드로 API를 호출해 MAP타입으로 전달 받는다.
            ResponseEntity<Map> resultMap = restTemplate.exchange(uri.toString(), HttpMethod.GET, entity, Map.class);
            result.put("statusCode", resultMap.getStatusCodeValue()); //http status code를 확인
            result.put("header", resultMap.getHeaders()); //헤더 정보 확인
            result.put("body", resultMap.getBody()); //실제 데이터 정보 확인
 
            //데이터를 제대로 전달 받았는지 확인 string형태로 파싱해줌
            ObjectMapper mapper = new ObjectMapper();
            jsonInString = mapper.writeValueAsString(resultMap.getBody());
 
        } catch (HttpClientErrorException | HttpServerErrorException e) {
            result.put("statusCode", e.getRawStatusCode());
            result.put("body"  , e.getStatusText());
            System.out.println("dfdfdfdf");
            System.out.println(e.toString());
 
        } catch (Exception e) {
            result.put("statusCode", "999");
            result.put("body"  , "excpetion오류");
            System.out.println(e.toString());
        }
 
        return jsonInString;
 
    }

출처.. https://vmpo.tistory.com/27

 

[Springboot] Resttemplate으로 api호출하기 (ex,영진위 데이터 호출 resttemplate.exchange 활용)

오늘은 springboot를 기반으로 웹서버를 생성한 후 API를 호출해 데이터를 전달 받아 화면에 출력해보도록 하겠습니다. Springboot 기본 설정은 아래 URL에서 확인 부탁드립니다. 인텔리J에서 Springboot

vmpo.tistory.com

response 고민하지 말고 한방에 이걸로..

반응형
반응형

MAP >> JSON >> JSONArray 변환 참조 

https://stackoverflow.com/questions/19018509/java-loop-over-json-array



rest api 를 get 으로 받아오는데.. 

header 에 API KEY 세팅해야되고.. POST 가 아니면 restTemplate 방식은 이상하고 아오 아오


restTemplate.exchange 에서

getBody()

로 가져온 데이터중 배열 데이터 제어하기가 순수 JAVA 컬렉션으로는 해결이 잘 안되어서

머리가 나쁜건지 ㅠ_ㅠ 엉엉


JSON 으로 변환하여 .. 해결

JSONObject jsonObj = new JSONObject(response.getBody());

반응형
반응형


검색해보니 제일 간단한게 RestTemplate 인것 같아서 공유


@GetMapping(value = "/test2")

public void  geturl() {

HttpHeaders header = new HttpHeaders();

header.set("token", "토큰키");

header.set("id_pcode", "10");

ResponseEntity<String> response = new RestTemplate().exchange("요청할 URL", HttpMethod.GET, new HttpEntity(header), String.class);

     System.out.println("response  ==  " + response);

}


** RestTemplate 메서드 참고 (http://spring.io/blog/2009/03/27/rest-in-spring-3-resttemplate) URL 


** 참고 두번째 사이트 http://cakas.tistory.com/9

반응형

+ Recent posts