HyperText Transfer Protocol
의 약자로 서버와 클라이언트 간 통신에 사용되는 규약이다.
소켓을 이용한 TCP/IP 통신을 기반으로 수행되지만, 거기에 HTTP 규약이 추가된 형태로 수행된다.
HTTP request와 response는 데이터 정보를 담는 Header
, 데이터를 담는 body
부분으로 구성된다.
Header
의 정보는 개행으로 구분되며 개행이 두번 되는 지점부터 body
가 시작된다/
Request와 Response의 세부 구성은 다음과 같다.
이미지 출처 : Joogle_HttpURLConnection을 이용한 HTTP 통신
HttpURLConnection
란 쉽게 말해 HTTP 통신을 가능하게 해 주는 클래스다.
쉽게 말해 웹 서버와의 HTTP 요청 및 응답을 처리하는데 사용된다.
또한 HttpURLConnection
는 URLConnection
의 하위 클래스로 HTTP 프로토콜을 통한 통신을 위해 특별히 설계되었다. 따라서 HttpURLConnection
은URLConnection
의 모든 기능을 상속 받으면서 HTTP 특정 기능을 추가로 제공한다 !!!
데이터 타입이나 길이의 제한이 거의 없어, 주로 미리 길이를 알지 못하는 스트리밍 데이터를 주고 받는데 사용한다.
요청 방식을 확인/설정, redirect 여부 결정, 응답 코드와 메시지를 Read, 프록시 서버가 사용되었는지 여부 확인 메서드 등을 가지고 있다.
다양한 HTTP 응답 코드에 해당하는 상수 값들이 정의되어 있다.
URLConnection
클래스의 gerPermission()
메서드를 오버라이드 해 놓았다.
URLConnection
클래스와 마찬가지로 생성자가 protected
로 선언되어 있기 때문에 기본적으로 개발자가 직접 HttpURLConnection
객체를 생성 할 수 없다.
하지만 http URL을 사용하는 URL 객체의 openConnection()
메서드가 리턴하는 URLConnection 객체
는 HttpURLConnection
의 인스턴스가 될 수 있기 때문에 리턴된 URLConnection을 다음과 같이 HttpURLConnection
으로 캐스팅 해서 사용한다.
URL u = new URL("http://www.naver.com");
HttpURLConnection http = (HttpURLConnection) u.openConnection();