분류 전체보기 42

java HttpClient 사용시에 Not in GZIP format 에러 발생할 때...

약간 황당한 순간입니다. response 헤더에 아래와 같이 설정이 되어 있습니다. Content-Encoding: gzip HttpClient는 당연히 해당 컨텐츠를 GZIPInputStream 으로 처리하려고 하는데.. 알고 보니 GZIP 형식이 아니어서 결국 에러를 냅니다. 해당 컨텐츠는 일반 텍스트 문서 입니다. 이럴 때는 아래 처럼 HttpClient를 생성하면 됩니다. CloseableHttpClient httpclient = HttpClients.custom().disableContentCompression().build() 참고로 대개 아래 처럼 생성합니다. CloseableHttpClient httpclient = HttpClients.createDefault()

개발환경 2019.10.16

java로 바이너리 파일 안정적으로 다운로드 받기

최근에 모사이트에서 pdf 파일을 다운로드 받아야 할 업무가 있었습니다. 가장 쉬운 방법은 org.apache.commons.io.FileUtils.copyURLToFile 을 이용하는 것입니다. 그런데 살펴보니 몇몇 pdf 파일은 다운은 받았지만 pdfview로 볼 수가 없었습니다. 다운받다가 중간에 끊긴 듯 싶습니다. 제가 자주 사용하는 방법은 httpcomponents-client-4.5.x 의 HttpClient 를 사용하는 것인데... 이것도 위의 방법보다 안정적이지만 몇몇 파일들에 문제가 있었습니다. 최종적으로 OkHttp 를 사용하여 가장 안정적으로 바이너리 파일을 다운받을 수 있었습니다. public static void downloadOkHttp(String url, File dstFil..

개발환경 2019.10.11

스프링 시큐리티 _ 로그인후에 이전 요청 페이지로 이동하기...

검색을 해 보면 대부분 REFERER 를 이용하여 처리하게 했는데 뭔가 적절하지 않은 솔류션이 아닌가 싶다. 대개 처음 페이지가 띄어져 있는 상태에서 임의의 메뉴를 선택할 때 로그인이 되어 있지 않으면 로그인 페이지로 이동하게 된다. 로그인이 성공하면 그 임의의 메뉴로 이동을 해야 하는데.. REFERER를 이용하여 처음 페이지로 이동하게 된다. 스프링 시큐리티를 사용하고 있다고 하면 spring-security.xml 에 아래처럼 처리한다. org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler 를 참고하여 CustomAuthenticationSuccessHandler 을 구현하면 된다. R..

개발환경 2019.09.23

github 에러...

Can't finish GitHub sharing process Successfully created project 'xxxx-xxxx' on GitHub, but initial push failed: Permission denied (publickey). Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. 1. 키를 새로 생성해 보지만 별 효과 없었음. 2. 권한을 변경해 보았지만 효과 없었음. 3. repository를 새로 생성했지만 효과 없었음. ==> git.exe 를 업그레이드를 하니 정상 작동됨..

개발환경 2019.06.17

AggregateQueue 구현

AggregateQueue import java.util.List; /** * Aggregator 를 일부 구현한 클래스. * 적당한 크기와 적당한 시간에 모인 데이터를 aggregate 한다. * @param */public interface AggregateQueue { /** * 큐에 입력한다. * @param o * @throws InterruptedException */ public void put(T o) throws InterruptedException; /** * 큐에서 추출한다. * @return * @throws InterruptedException */ public List take() throws InterruptedException; public int size();} Aggreg..

개발환경 2018.06.01