HttpsURLConnection의 headers값 가져오기

전에 올렸던 서버단에서 URL로 파일 다운로드받는 코드에서 추가해야할 부분이 생겼다.

URL을 요청하면 headers값이 같이 온다.

기존에는 원래 header값들을 무시하고 새로 header를 만들었는데

처음 data.go.kr에서 받아오는 response header의 Content_TYPE과 CONTENT_DISPOSITION이 필요해서 가져와야 하는 경우가 생겼다

try {
	URL obj = new URL(dataurl);
	HttpsURLConnection con = (HttpsURLConnection) obj.openConnection(); // 해당 url 연결
	con.setRequestMethod("GET");
	Map headermap = con.getHeaderFields();  //  HttpsURLConnection의 header를 map형식으로 가져온다.

	inputStream = con.getInputStream(); // inputStream으로 저장
	out = response.getOutputStream();
	// byte[] data = inputStream.readAllBytes();  // JAVA 9 부터 지원
	byte[] data = IOUtils.toByteArray(inputStream); // inputStream -> byte 배열로 변환
	
	HttpHeaders header = new HttpHeaders();
	String content_type = headermap.get("Content-Type").toString().substring(1, headermap.get("Content-Type").toString().length()-1);
	String content_disposition = headermap.get("Content-Disposition").toString().substring(1, headermap.get("Content-Disposition").toString().length()-1);
	header.set(HttpHeaders.CONTENT_TYPE, content_type);
	header.set(HttpHeaders.CONTENT_DISPOSITION, content_disposition); // 문서 이름 및 확장자
	
	entity = new ResponseEntity<byte[]>(data, header, HttpStatus.OK);
    
} catch (Exception e) {
	e.printStackTrace();
	entity = new ResponseEntity<byte[]>(HttpStatus.BAD_REQUEST);
}

Leave a comment