KYS : HTTP 서버와 통신을 할 수 있도록 기능을 제공하는 라이브러리, 사용자는 프로토콜의 변할 수 있는 부분만 결정해주면, 클라이언트가 서버와 소통할 수 있는 형태로 변환하여 요청 해주고, 응답 역시 사용자가 쉽게 해석하고 그에 맞는 처리를 쉽게 할 수 있도록 변환하여 제공해 준다.
KDH : 필요한 정보를 위해 Server에 요청을 보내고 받는 역할을 담당한다. Client가 Http 프로토콜을 기반으로 통신하는 과정에서 필요한 포맷과 기능을 지원하는 범용 라이브러리인 okHttp, RestTemplate(Spring), Apache의 HttpClient 등이 있다.
HSM : 추상적으로 생각해보면 HTTP Client는 HTTP 통신으로 외부에 있는 누군가와 의사소통을 하려는 당사자라고 생각합니다. 구현에 초점을 두고 생각해본다면 HTTP 제약에 맞춰 목적지 서버와 통신을 위해 관련 요청을 하고 수신 처리를 하도록 도와주는 라이브러리라고 생각합니다.
-
두 번째 과제 공유
-
재밌거나 신기하거나 어려웠거나
-
URLConnection ?
-
HTTP Client 의 역할
-
HTTP Client 에는 어떤게 있을까
-
HTTP Client 를 왜 사용할까? 왜 선택했나?
-
오픈 소스(OkHTTP)를 이용해 클라이언트가 HTTP 로 통신하는 과정을 디버깅해보자
-
높은 버전은 어려우므로 1 버전으로 진행 !
-
OkHttp 를 디버깅하며 정리한 내용을 한 장의 문서로 만들어 공유해보자 !
- YHJ Http 구조 한눈에 보기!
- KYS ok-http 정리
- CHH okHttp 흐름 따라가기
- KDH OkHttp디버깅 & 헤더 뜯어보기
- KDH okHttp 디버깅해보기!
- JMS okHttp 디버깅 & 흐름 보기
- HSM ok-http 동작흐름 정리!
괄호() 는 클래스를 의미
- 클라이언트 생성 (OkHttpClient)
- 클라이언트 URL 설정 및 초기화 (OkHttpClient -> HttpURLConnectionImpl)
- 요청 및 응답 처리 (HttpURLConnectionImpl)
- httpEngine 초기화
- 요청 보내기 (HttpEngine)
- 요청 헤더 준비하기
- 캐시 판별하기
- Socket 생성 (TCP 연결 맺기)
- Https 확인하고 SSL 설정하기
- RouteSelector 를 이용해 Connection 을 생성
- socket 생성 (Connection)
- socket 연결 (Connection)
- 응답 읽기 (HttpEngine)