# HTTP/2 Client

**URL:** https://clojureverse.org/t/http-2-client/3701
**Category:** How to?
**Created:** [January 28, 2019, 6:25am UTC](https://clojureverse.org/t/http-2-client/3701 "2019-01-28T06:25:56Z")
**Posts on this page:** 1
**Showing post:** 5

<div class="post-metadata">

### Author: ![thheller](https://clojureverse.org/user_avatar/clojureverse.org/thheller/32/534_2.png) [@thheller](https://clojureverse.org/u/thheller)
#### Post date: [January 28, 2019, 10:39am UTC](https://clojureverse.org/t/http-2-client/3701/5 "2019-01-28T10:39:50Z")

</div>

If you are running Clojure on Java11 you can use the newly added [HttpClient](https://docs.oracle.com/en/java/javase/11/docs/api/java.net.http/java/net/http/HttpClient.html) which has full support for HTTP/2. The API is a bit java-ish but works well enough from Clojure.

```auto
(ns foo.test
  (:import [java.net.http HttpClient HttpRequest HttpClient$Version HttpResponse$BodyHandlers]
           [java.net URI]))

(let [req
      (-> (HttpRequest/newBuilder)
          (.uri (URI/create "https://www.google.com"))
          (.GET)
          (.build))

      client
      (-> (HttpClient/newBuilder)
          (.version HttpClient$Version/HTTP_2)
          (.build))

      res
      (.send client req (HttpResponse$BodyHandlers/ofString))]
  (println (.body res)))

```

The entire `java.net.http` package is pretty powerful and supports everything you’ll ever need to do HTTP requests. Assuming of course you are running Java11 and Clojure.

---

_[View the full topic](https://clojureverse.org/t/http-2-client/3701)._
