# HttpClient()
provides low-level HTTP functionality. package:http
가 더 고레벨이며 쓰기 편하다.
getUrl
은 두단계로 이루어지고 두개의 Future가 작동한다.
먼저 HttpClientRequest
가 커넥션을 요청한다.
커넥션이 이루어져도 데이터가 바로 보내지진 않는다.
첫번째 콜백으로 HTTP 헤더와 바디를 리퀘스트해서 보낼 수 있다.
request.write
혹은 request.close
를 하면 서버로 리퀘스트가 가게 된다.
close
를 하게되면 서버에서 리스폰스가 오고 두번째 future가 HttpClientResponse
오브젝트로 완료된다.
HttpClientResponse
는 데이터 Stream
이다.
이 오브젝트로 리스폰스의 헤더와 바디에 접근할 수 있다.
바디가 있다면 반드시 읽어야하며 읽지 않는다면 resource leak가 일어난다. 사용하지 않으려면 drain
을 해줘야한다.