안드로이드 HTTP 통신
통신을 하기 위해서는 2가지 방식이 있다.
- Socket 연결
- 클라이언트와 서버의 양방향 통신
- 실시간으로 데이터를 주고 받는 상황이 필요한 경우 (스트리밍, 온라인 게임)
- HTTP 연결
- 클라이언트가 요청을 보내는 경우에만 서버가 응답하는 단방향 통신
- 실시간 연결이 아닌, 필요한 상황에만 서버의 request를 보낸다
- 서버로부터 응답을 받은 후에는 연결이 종료됨(=Connectionless)
- 서버가 클라이언트를 외우지 못함(=Stateless), 필요한 경우 쿠키/세션 이용
HTTP 동작방식
- 클라이언트가 서버에 Header + Body로 이루어진 메시지를 요청한다
- 서버는 요청을 처리하고 응답코드와 함께 response를 반환한다
HTTP 메소드
method | 설명 |
---|
GET | 서버에 리소스를 요청(Safe method) |
HEAD | GET과 동일하지만 서버가 body를 반환하지 않음 |
POST | 클라이언트에서 요청한 URL에 본문의 내용으로 새로운 리소스 생성 |
PUT | 서버에 리소스를 쓸 때 |
DELETE | 서버에서 요청리소스 삭제 |
TRACE | 패킷의 변조를 확인하기 위해, 서버가 수신한 클라이언트 메시지 반환 |
RESTful API
: HTTP기반의 정보를 안전하게 교환하기 위해 사용하는 아키텍처를 적용한 인터페이스
Android HTTP Client
-
HttpClient
- Apache 라이브러리
- Android 6.0에서 삭제됨
-
HttpUrlConnection
-
Volley
- Google에서 제시한 라이브러리
- 네트워크 요청 자동 스케쥴링
- 여러개 동시 네트워크 연결
-
OkHttp
-
Retrofit
- OkHttp를 래핑한 Squareup 사의 라이브러리
- 동기/비동기 쉬운 구현
- annotation 사용으로 뛰어난 가독성
- 빠른 성능
-
Ktor
- 코틀린 라이브러리 (멀티플랫폼 프레임워크)
- 비동기 서버와 클라이언트 프로그래밍 가능
- 확장성👍
참고 https://www.inflearn.com/course/%EC%95%8C%EA%B8%B0%EC%89%AC%EC%9A%B4-modern-android/unit/112149