it-day/springboot

Unirest 사용하여 PDF 파일과 같은 바이너리 데이터를 가져와보자

별지킴Lee 2024. 6. 13. 10:31

Unirest 라이브러리를 사용하여 특정 URL로 GET 요청을 보내고, 응답을 InputStream 형식으로 받는 메서드

private HttpResponse<InputStream> callGetApiByPdf(String url) throws Exception {
	log.info("[API] url = {} " , url );

	Unirest.setTimeouts(30 * 1000, 30 * 1000);
	HttpResponse<InputStream> response = Unirest.get(yml에선언 + url)
			.header("Accept", "application/octet-stream")
			.asBinary();

	log.info("[API] response.getStatus() = {} " , response.getStatus() );
	log.info("[API] response.getBody() = {} " ,  response.getBody() );

	return response;
}

 

private HttpResponse<InputStream> callGetApiByPdf(String url) throws Exception

 - private: 클래스 내부에서만 접근!!
 - HttpResponse<InputStream>: HttpResponse 객체를 반환하며, 그 내용은 InputStream 형식
 - throws Exception: 예외가 발생할 수 있음을 나타냄

 

log.info("[API] url = {} ", url);
 - 요청을 보내기 전에 URL을 로그로 기록

 

Unirest.setTimeouts(30 * 1000, 30 * 1000);
 - 타임아웃 설정: 연결 타임아웃과 읽기 타임아웃을 각각 30초로 설정

 

HttpResponse<InputStream> response = Unirest.get(yml에선언 + url)
        .header("Accept", "application/octet-stream")
        .asBinary();
 - Unirest.get(yml에선언 + url): Unirest 라이브러리를 사용하여 GET 요청을 보냄
 - .header("Accept", "application/octet-stream"): 서버에게 바이너리 데이터를 기대하고 있음을 알려줌
 - .asBinary(): 응답을 바이너리 형식으로 받기

 

log.info("[API] response.getStatus() = {} ", response.getStatus());
log.info("[API] response.getBody() = {} ", response.getBody());
 - 응답 상태 코드와 응답 본문(InputStream)을 로그로 기록

 

return response;