[JAVA] 홈택스 인증서 로그인 다시 구현(업데이트 된 부분 반영)
2024. 11. 27. 20:41
프로그래밍/JAVA
몇 달 전 홈택스 공인 인증서 로그인 + 매입/매출 계산서 조회 부분을 구현했는데 11월 2일 홈택스 고도화 작업으로 인하여 api 등 꽤 많은 변경사항이 있었고 에러가 떴음 변경된 부분 파악하고 업데이트를 하기로 했음 크게 변경된 부분은 로그인을 위한 pkcEncSsn 을 가져오기 위한 API 통신을 할 때, 먼저 쿠키를 세팅해 주는 부분과기존에는 API 요청과 응답을 xml로 통신 했다면 json으로 바꼈다는 점 이를 염두해 두고 서비스 전체 코드를 수정함String getPkcEncSsnUrl = "https://www.hometax.go.kr/wqAction.do?actionId=ATXPPZXA001R01&screenId=UTXPPABA01";// pkcEncSsn, cookies 값 얻기Resp..
[Java] 홈택스 공동 인증서 로그인_3
2024. 9. 24. 20:38
프로그래밍/JAVA
마지막 단계인 공동 인증서 로그인 하기 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(..
[Java] 홈택스 공동 인증서 로그인_2
2024. 9. 11. 20:05
프로그래밍/JAVA
다음으로 쿠키 세팅과 파라미터 세팅을 해야함 1. 인증서 로그인에 필요한 쿠키를 세팅헤더세팅 값Content-Typeapplication/x-www-form-urlencoded; charset=UTF-8CookieWMONID, TXPPsessionID https://www.hometax.go.kr/wqAction.do?actionId=ATXPPZXA001R01&screenId=UTXPPABA01위의 API GET 요청을 통해 쿠키 정보를 가져와 WMONID, TXPPsessionID 정보를 세팅하고, 파마미터 세팅에 중요한 값인 Response에서 pkcEncSsn에 담긴 값을 가져옴 아래와 같이 Header 세팅을 해줌HttpHeaders headers = new HttpHeaders();header..
[Java Error] java.security.NoSuchProviderException: No such provider: BC
2024. 9. 5. 20:40
프로그래밍/JAVA
java.security.NoSuchProviderException: No such provider: BC 에러 원인과 해결 방법 원인 Cipher cipher = Cipher.getInstance("SEED/CBC/PKCS5Padding", "BC");위의 코드를 실행했더니 아래의 에러가 났음 먼저 코드를 살펴보자SEED 알고리즘은 java.security의 Provider에서 제공하지 않는 알고리즘이기에 org.bouncycastle 를 gradle에 추가해서 가져오려고 했음// gradleimplementation group: 'org.bouncycastle', name: 'bcprov-jdk18on', version: '1.77'implementation group: 'org.bouncycastl..
[Spring Error] java.lang.IllegalArgumentException: Invalid character found in the request target... 에러 해결 방법
2023. 12. 1. 20:58
프로그래밍/JAVA
java.lang.IllegalArgumentException: Invalid character found in the request target. 에러 프론트에서 파일명을 백엔드로 넘길 때 해당 에러가 발생 발생 원인 파일명에 특수 문자나 공백을 포함하고 있어서 에러 발생 해결 방법 파일명을 인코딩해서 서버로 보내기 예시 const data = encodeURI("home/dev/[20231201]샘플_첨부_파일.png");
[Java] ArrayList 맨 앞에 값 추가하기
2023. 10. 12. 20:50
프로그래밍/JAVA
ArrayList 맨 앞에 값 추가하기 addAll을 사용하여 0번째 인덱스에 값 추가 import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class Sample { public static void main(String[] args) { List list1 = new ArrayList(Arrays.asList("3", "4")); List list2 = new ArrayList(Arrays.asList("1", "2")); // list 맨 앞에 값 추가 => 0번째 인덱스에 값 추가 list1.addAll(0, list2); // 결과 출력 System.out.println(list1); // [1, 2,..
[Java] Deprecated StringUtils.isEmpty 대체
2023. 9. 27. 20:28
프로그래밍/JAVA
StringUtils.isEmpty 대체 StringUtils.isEmpty가 deprecated 됨 hasLength, hasText로 대체해서 사용 가능 StringUtils.hasLength 문자열의 길이 확인 주어진 문자열이 null이 아니고 길이가 0보다 크면 true String str = "Hello, World!"; boolean hasLength = StringUtils.hasLength(str); StringUtils.hasText 문자열에 공백 문자를 제외한 실제 문자가 포함되어 있는지 확인 주어진 문자열이 null이 아니고 길이가 0보다 크며, 공백 문자를 제외한 문자가 포함되어 있으면 ture String str = " "; boolean hasText = StringUtils.h..