# HttpClient()

provides low-level HTTP functionality. package:http 가 더 고레벨이며 쓰기 편하다.

getUrl은 두단계로 이루어지고 두개의 Future가 작동한다.

먼저 HttpClientRequest가 커넥션을 요청한다.

커넥션이 이루어져도 데이터가 바로 보내지진 않는다.

첫번째 콜백으로 HTTP 헤더와 바디를 리퀘스트해서 보낼 수 있다.

request.write혹은 request.close를 하면 서버로 리퀘스트가 가게 된다.

close를 하게되면 서버에서 리스폰스가 오고 두번째 future가 HttpClientResponse 오브젝트로 완료된다.

HttpClientResponse는 데이터 Stream이다.

이 오브젝트로 리스폰스의 헤더와 바디에 접근할 수 있다.

바디가 있다면 반드시 읽어야하며 읽지 않는다면 resource leak가 일어난다. 사용하지 않으려면 drain을 해줘야한다.