diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,7 @@
+## 0.4.11.3
+
+* Fix getUri to insert "?" to uriQuery when necessary. [#123](https://github.com/snoyberg/http-client/pull/123)
+
 ## 0.4.11.2
 
 * Removed publicsuffixlist dependency, see [Github discussion](https://github.com/litherum/publicsuffixlist/pull/7)
diff --git a/Network/HTTP/Client/Request.hs b/Network/HTTP/Client/Request.hs
--- a/Network/HTTP/Client/Request.hs
+++ b/Network/HTTP/Client/Request.hs
@@ -107,7 +107,10 @@
         , uriPort = ':' : show (port req)
         }
     , uriPath = S8.unpack $ path req
-    , uriQuery = S8.unpack $ queryString req
+    , uriQuery =
+        case S8.uncons $ queryString req of
+            Just (c, _) | c /= '?' -> '?' : (S8.unpack $ queryString req)
+            _ -> S8.unpack $ queryString req
     , uriFragment = ""
     }
 
diff --git a/http-client.cabal b/http-client.cabal
--- a/http-client.cabal
+++ b/http-client.cabal
@@ -1,5 +1,5 @@
 name:                http-client
-version:             0.4.11.2
+version:             0.4.11.3
 synopsis:            An HTTP client engine, intended as a base layer for more user-friendly packages.
 description:         Hackage documentation generation is not reliable. For up to date documentation, please see: <http://www.stackage.org/package/http-client>.
 homepage:            https://github.com/snoyberg/http-client
