728x90
반응형
마지막 단계인 공동 인증서 로그인 하기
API URL : https://www.hometax.go.kr/pubcLogin.do?domain=hometax.go.kr&mainSys=Y
이전 페이지 들에서 가져왔던 값들을 header와 params에 세팅해주고 POST 메서드로 통신을 한 후 Response를 받아오기
이 Response에는 전자 세금 계산서 조회에 필요한 TXPPsessionID가 들어있음
1. header 및 params 세팅
앞서 설명한 내용대로 쿠키와 파라미터를 세팅해주기
String url = "https://www.hometax.go.kr/pubcLogin.do?domain=hometax.go.kr&mainSys=Y";
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
headers.set(HttpHeaders.COOKIE, cookies);
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
params.add("cert", cert);
params.add("logSgnt", logSgnt);
params.add("pkcLgnClCd", "04"); // 04 하드 코딩
params.add("pkcLoginYnImpv", "Y"); // Y 하드 코딩
params.add("randomEnc", randomEnc);
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(params, headers);
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> loginResponse = restTemplate.exchange(url, HttpMethod.POST, request, String.class);
이때, 통신에 성공했다면 200 OK에 아래와 같은 body를 반환함
<200 OK OK,nts_loginSystemCallback('TXPP', { 'code' : 'S', 'errCode' : null, 'errMsg' : decodeURIComponent('').replace(/\+/g,' ').replace(/\\n/g,'\n'), 'lgnRsltCd' : '01', 'pswdErrNbcnt' : null, 'tin' : null, 'secCardId' : null});> |
주의 깊게 봐야 하는 부분은 decodeURIComponent('') 이 부분임
만약 이 부분에 빈 값('')이 아닌 다른 인코딩 된 데이터가 들어가 있다면 오류가 있는 상태임
URL decode 사이트를 통해 오류 확인 필요 → https://www.urldecoder.org/
2. response cookie 에서 TXPPsessionID 값 가져오기
값을 가져오는 방식이나 1번의 api 통신 방식은 자신에게 편한 방식으로 하면 됨
List<String> responseCookies = loginResponse.getHeaders().get(HttpHeaders.SET_COOKIE);
if (responseCookies != null) {
for (String cookie : responseCookies) {
if (cookie.startsWith("TXPPsessionID")) {
txppSessionId = cookie.split(";")[0].split("=")[1];
break;
}
}
}
공동 인증서 로그인 후 TXPPsessionID 가져오기 완료 👊
반응형
'프로그래밍 > JAVA' 카테고리의 다른 글
[JAVA] 홈택스 인증서 로그인 다시 구현(업데이트 된 부분 반영) (0) | 2024.11.27 |
---|---|
[Java] 홈택스 공동 인증서 로그인_2 (0) | 2024.09.11 |
[Java] 홈택스 공동 인증서 로그인_1 (0) | 2024.09.09 |
[Java Error] java.security.NoSuchProviderException: No such provider: BC (0) | 2024.09.05 |
[Spring Error] java.lang.IllegalArgumentException: Invalid character found in the request target... 에러 해결 방법 (0) | 2023.12.01 |