728x90
* 이전에 만들어 둔 NaverShopSearch 클래스를 웹서비스에 이용할 수 있도록 수정
- 만들어 둔 NaverShopSearch
package com.sparta.week04.utils;
...
public class NaverShopSearch {
//Java에서 url에 한글로 입력을 해도 인코딩을 알아서 해줌
public String search() {
RestTemplate rest = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
//네이버 API가 정의한대로 헤더를 넘겨줌
headers.add("X-Naver-Client-Id", "Fzj17ucnTdxEPXlsLH8O");
headers.add("X-Naver-Client-Secret", "Tpspa8UeG_");
String body = ""; //응답받은 결과물이 들어갈 변수
HttpEntity<String> requestEntity = new HttpEntity<String>(body, headers);
ResponseEntity<String> responseEntity = rest.exchange("https://openapi.naver.com/v1/search/shop.json?query=아디다스", HttpMethod.GET, requestEntity, String.class);
HttpStatus httpStatus = responseEntity.getStatusCode();
int status = httpStatus.value(); //200이나 404 이런게 들어감
String response = responseEntity.getBody(); //Request에 대한 Response가 문자열로 들어감
System.out.println("Response status: " + status);
System.out.println(response);
return response;
}
public static void main(String[] args) {
NaverShopSearch naverShopSearch = new NaverShopSearch();
naverShopSearch.search();
}
}
- 검색어를 아무거나 넣어도 되도록 search() 함수 수정
search함수의 매개변수를 생성하고 매개변수에 검색어를 넣으면 됨
url의 쿼리스트링에 "...?query=아디다스" -> "...?query=" + query 매개변수 값이 들어가도록 수정
package com.sparta.week04.utils;
...
public class NaverShopSearch {
//Java에서 url에 한글로 입력을 해도 인코딩을 알아서 해줌
public String search(String query) {
RestTemplate rest = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
//네이버 API가 정의한대로 헤더를 넘겨줌
headers.add("X-Naver-Client-Id", "Fzj17ucnTdxEPXlsLH8O");
headers.add("X-Naver-Client-Secret", "Tpspa8UeG_");
String body = ""; //응답받은 결과물이 들어갈 변수
HttpEntity<String> requestEntity = new HttpEntity<String>(body, headers);
ResponseEntity<String> responseEntity = rest.exchange("https://openapi.naver.com/v1/search/shop.json?query=" + query, HttpMethod.GET, requestEntity, String.class);
HttpStatus httpStatus = responseEntity.getStatusCode();
int status = httpStatus.value(); //200이나 404 이런게 들어감
String response = responseEntity.getBody(); //Request에 대한 Response가 문자열로 들어감
System.out.println("Response status: " + status);
System.out.println(response);
return response;
}
public static void main(String[] args) {
NaverShopSearch naverShopSearch = new NaverShopSearch();
naverShopSearch.search("아이패드 케이스");
}
}
- 실행 결과
* 위처럼 묶여있는 데이터를 쪼개고 쪼개서 각각의 데이터로 가져온 다음 Java의 List에 담는 함수를 만들 것임
JSON(이지만 문자열임) -> Java List로 바꿔주는 과정
List에는 데이터가 담겨있는 클래스가 담겨있어야 하는데 그 클래스를 만들어줘야 함
/*ItemDto.java*/
package com.sparta.week04.models;
...
@Getter
public class ItemDto {
private String title;
private String link;
private String image;
private int lprice;
public ItemDto(JSONObject jsonObject) {
this.title = jsonObject.getString("title");
this.link = jsonObject.getString("link");
this.image = jsonObject.getString("image");
this.lprice = jsonObject.getInt("lprice");
}
}
/*NaverShopSearch.java*/
package com.sparta.week04.utils;
...
public class NaverShopSearch {
//Java에서 url에 한글로 입력을 해도 인코딩을 알아서 해줌
public String search(String query) {
RestTemplate rest = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
//네이버 API가 정의한대로 헤더를 넘겨줌
headers.add("X-Naver-Client-Id", "Fzj17ucnTdxEPXlsLH8O");
headers.add("X-Naver-Client-Secret", "Tpspa8UeG_");
String body = ""; //응답받은 결과물이 들어갈 변수
HttpEntity<String> requestEntity = new HttpEntity<String>(body, headers);
ResponseEntity<String> responseEntity = rest.exchange("https://openapi.naver.com/v1/search/shop.json?query=" + query, HttpMethod.GET, requestEntity, String.class);
HttpStatus httpStatus = responseEntity.getStatusCode();
int status = httpStatus.value(); //200이나 404 이런게 들어감
String response = responseEntity.getBody(); //Request에 대한 Response가 문자열로 들어감
System.out.println("Response status: " + status);
System.out.println(response);
return response;
}
public List<ItemDto> fromJsonToItems(String result) {
JSONObject resultJson = new JSONObject(result);
System.out.println("resultJson :\n" + resultJson); //출력 결과 중 [] : json 배열(JSONArray 클래스)
JSONArray items = resultJson.getJSONArray("items"); //매개변수는 key:value 중 key값
List<ItemDto> itemDtoList = new ArrayList(); //클래스를 담을 List 선언
for (int i=0; i<items.length(); i++) { //JSONArray 클래스에서는 size()가 아닌 length()
JSONObject itemJson = items.getJSONObject(i); //= (JSONObject) items.get(i)
System.out.println("itemJson :\n" + itemJson);
ItemDto itemDto = new ItemDto(itemJson);
itemDtoList.add(itemDto);
}
return itemDtoList;
}
}
- fromJsonToItems 메소드 데이터 확인
'Spring Framework' 카테고리의 다른 글
나만의셀렉샵) 키워드로 상품 검색하기 - 네이버 API와 서비스 연결하기 (0) | 2021.07.28 |
---|---|
JSONObject, JSONArray (0) | 2021.07.27 |
나만의셀렉샵) 관심 상품 등록하기 (0) | 2021.07.26 |
나만의셀렉샵) 관심 상품 조회하기 (0) | 2021.07.26 |
자바로 네이버 쇼핑 API 이용하기 (0) | 2021.07.25 |