IT/WEB

[WEB] API 간단한 호출 및 JSON 받기

오달달씨 2022. 8. 3. 14:09
728x90
반응형

최근에 취업 과제로 특정 API를 호출해 JSON으로 받는 문제가 있다.

 

매우 간단한 예제라서 간단하게 정의해보겠다.

 

gradle 추가하기

1. JSON으로 받기

implementation 'org.json:json:20220320'
implementation 'com.googlecode.json-simple:json-simple:1.1.1'

2. httpcomponents.httpclinet 추가

implementation 'org.apache.httpcomponents:httpclient:4.5'
implementation 'com.google.code.gson:gson:2.8.5'

 

Request JSON

Response JSON

{
    "status""success",
    "data": {
        "jsonList": {
            "scrap002": [
                {
                    "총사용금액""3,000,000",
                    "소득구분""산출세액"
                }
            ],
            "scrap001": [
                {
                    "소득내역""급여",
                    "총지급액""40,000.000",
                    "업무시작일""2020.10.03",
                    "기업명""(주)초합금",
                    "이름""마징가",
                    "지급일""2020.11.02",
                    "업무종료일""2020.11.02",
                    "주민등록번호""880601-2455116",
                    "소득구분""근로소득(연간)",
                    "사업자등록번호""013-44-56689"
                }
            ],
            "errMsg""",
            "company""test",
            "svcCd""test01",
            "userId""3"
        },
        "appVer""2021112501",
        "hostNm""jobis-codetest",
        "workerResDt""2022-08-03T04:40:51.252195",
        "workerReqDt""2022-08-03T04:40:51.252548"
    },
    "errors": {}
}

 

우선 해당 API를 호출해보자.

private String scrapUrl = "https://~~/v1/scrap";





public void test() {
	HttpHeaders httpHeader = new HttpHeaders();
	httpHeader.set("Authorization", header.substring(7));
		
	HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
	// timeout 관련 설정
	factory.setConnectTimeout(10000); // 10초
	factory.setReadTimeout(300000);   // 300초
	
	RestTemplate restTemplate = new RestTemplate(factory);
		
	Member member = memberRepository.findByUserId(getDecryptJwt(header)).get(0);
	
	JSONObject reqParam = new JSONObject();
	reqParam.put("name", member.getName());
	reqParam.put("regNo", AES256Cipher.decryptText(member.getRegNo()));
    
	HttpEntity httpEntity = new HttpEntity(reqParam, httpHeader);
	ResponseEntity<Map> resultMap = restTemplate.exchange(scrapUrl, HttpMethod.POST, httpEntity, Map.class);
		
	HashMap<String, Object> resultData = (HashMap<String, Object>) resultMap.getBody().get("data");
    
    try {
			
		ObjectMapper mapper = new ObjectMapper();
		JSONParser parser = new JSONParser();
		
		Object obj = parser.parse(mapper.writeValueAsString(resultData.get("jsonList")));
		
		JSONObject jsonObj = (JSONObject) obj;
		JSONArray scrap001jsonArr = (JSONArray) jsonObj.get("scrap001");
		JSONArray scrap002jsonArr = (JSONArray) jsonObj.get("scrap002");
		JSONArray scrap003jsonArr = (JSONArray) jsonObj.get("scrap003");
		JSONArray scrap004jsonArr = (JSONArray) jsonObj.get("scrap004");
		log.info("scrap001  : " + scrap001jsonArr.get(0));
		log.info("scrap002  : " + scrap002jsonArr.get(0));
//		log.info("scrap003  : " + scrap003jsonArr.get(0));
//		log.info("scrap004  : " + scrap004jsonArr.get(0));
			
		if(scrap001jsonArr.get(0) != null) {
			HashMap<String, String> scrap001Obj = new HashMap<String, String>();
			scrap001Obj = mapper.readValue(scrap001jsonArr.get(0).toString(), HashMap.class);
			log.info("scrap001Obj : " + scrap001Obj);
			Scrap001 scrap001 = new Scrap001();
			scrap001.setIncomeDetails(scrap001Obj.get("소득내역"));
			scrap001.setTotalPayment(scrap001Obj.get("총지급액"));
			scrap001.setStartDate(scrap001Obj.get("업무시작일"));
			scrap001.setCompanyName(scrap001Obj.get("기업명"));
			scrap001.setPaymentDate(scrap001Obj.get("이름"));
			scrap001.setEndDate(scrap001Obj.get("지급일"));
			scrap001.setName(scrap001Obj.get("업무종료일"));
			scrap001.setRegNo(AES256Cipher.encryptText(scrap001Obj.get("주민등록번호")));
			scrap001.setIncomeDetails(scrap001Obj.get("소득구분"));
			scrap001.setCompanyNum(scrap001Obj.get("사업자등록번호"));
			scrap001.setMember(member);
			scrap001Repository.save(scrap001);
			
			member.setS1(scrap001);
		}
		
		if(scrap002jsonArr.get(0) != null) {
			HashMap<String, String> scrap002Obj = new HashMap<String, String>();
			scrap002Obj = new ObjectMapper().readValue(scrap002jsonArr.get(0).toString(), HashMap.class);
			log.info("scrap002Obj : " + scrap002Obj);
			Scrap002 scrap002 = new Scrap002();
			scrap002.setTotalAmountUsed(scrap002Obj.get("총사용금액"));
			scrap002.setIncomeClassification(scrap002Obj.get("소득구분"));
			scrap002.setMember(member);
			scrap002Repository.save(scrap002);
			
			member.setS2(scrap002);
		}
		
		if(scrap003jsonArr.get(0) != null) {
			HashMap<String, String> scrap003Obj = new HashMap<String, String>();
			scrap003Obj = new ObjectMapper().readValue(scrap003jsonArr.get(0).toString(), HashMap.class);
			log.info("scrap003Obj : " + scrap003Obj);
			Scrap003 scrap003 = new Scrap003();
			scrap003.setHomeOwner(scrap003Obj.get("주택소지여부"));
			scrap003.setSubscribeForHousing(scrap003Obj.get("주택청약가입여부"));
			scrap003.setSubscribeForHousingPayment(scrap003Obj.get("주택청약납입금"));
			scrap003.setMember(member);
			scrap003Repository.save(scrap003);
			
			member.setS3(scrap003);
		}
			
		if(scrap004jsonArr.get(0) != null) {
			HashMap<String, String> scrap004Obj = new HashMap<String, String>();
			scrap004Obj = new ObjectMapper().readValue(scrap004jsonArr.get(0).toString(), HashMap.class);
			log.info("scrap004Obj : " + scrap004Obj);
			Scrap004 scrap004 = new Scrap004();
			scrap004.setTaxAccountant(scrap004Obj.get("수임된세무사"));
			scrap004.setConsentAcceptance(scrap004Obj.get("수임동의여부"));
			scrap004.setTaxAccountantHp(scrap004Obj.get("수임된세무사연락처"));
			scrap004.setMember(member);
			scrap004Repository.save(scrap004);
			
			member.setS4(scrap004);
		}
		
			
	} catch (Exception e) {
			e.printStackTrace();
		}
}

 

728x90
반응형