@@ -26,8 +26,8 @@ import GHC.TypeLits
2626import Network.HTTP.Media
2727import qualified Network.HTTP.Types as H
2828import Servant.API
29+import Servant.API.ContentTypes
2930import Servant.Common.BaseUrl
30−import Servant.Server.ContentTypes
3131import Servant.Common.Req
3232import Servant.Common.Text
3333
@@ -438,15 +438,16 @@ instance HasClient Raw where
438438-- > addBook :: Book -> BaseUrl -> EitherT String IO Book
439439-- > addBook = client myApi
440440-- > -- then you can just use "addBook" to query that endpoint
441−instance (ToJSON a, HasClient sublayout)
441+instance (MimeRender ct a, HasClient sublayout)
442442 => HasClient (ReqBody (ct ': cts) a :> sublayout) where
443443
444444 type Client (ReqBody (ct ': cts) a :> sublayout) =
445445 a -> Client sublayout
446446
447447 clientWithRoute Proxy req body =
448− clientWithRoute (Proxy :: Proxy sublayout) $
449− setRQBody (encode body) ("application" // "json" /: ("charset", "utf-8")) req
448+ clientWithRoute (Proxy :: Proxy sublayout) $ do
449+ let ctProxy = Proxy :: Proxy ct
450+ setRQBody (toByteString ctProxy body) (contentType ctProxy) req
450451
451452-- | Make the querying function append @path@ to the request path.
452453instance (KnownSymbol path, HasClient sublayout) => HasClient (path :> sublayout) where