HTTP and WebSocket client based on io-streams

Version on this page:
LTS Haskell 22.29:
Stackage Nightly 2024-07-13:
Latest on Hackage:

See all snapshots http-io-streams appears in

BSD-3-Clause AND GPL-2.0-or-later licensed by Andrew Cowie, Herbert Valerio Riedel
Maintained by
This version can be pinned in stack with:http-io-streams-,4913

Module documentation for

An HTTP client with WebSocket (RFC 6455) support, using the Snap Framework's io-streams library to handle the streaming IO. The http-io-streams API designed for ease of use when querying web services and dealing with the result as streaming I/O.

The main HTTP/1.1 part of the library is exported in a single module Network.Http.Client; the WebSocket specific functionality is available from the Network.Http.Client.WebSocket module.

NOTE: This package originally started as a fork of http-streams with a lighter dependency footprint focusing on core HTTP functionality.


See also

  • Allow mtl-2.3 (no code change).
  • Run test-suite via cabal test.

Tested with GHC 7.4 - 9.6. revision 1

  • Allow text-2.0 (no code change).

  • Build with GHC 9.2 and ghc-prim-0.8 (via base-4.16).

  • New function openConnectionAddress'' supporting supplying local SSLContexts as well as modifying the SSL connection before initiating the client SSL handshake.
  • New function openConnectionSSL' which allows to customize the SSL connection before a client SSL handshake is attempted.
  • New convenience function getContextSSL function allowing to retrieve global SSLContext.

  • New function openConnectionAddress' function supporting supplying local SSLContexts.

  • New module Network.Http.Client.WebSocket providing basic RFC6455 support.
  • New function inputStreamBodyChunked supporting breaking up over-sized chunks.

  • New functions receiveUpgradeResponse, receiveConnectResponse, and unsafeWithRawStreams for accessing full-duplex low-level streams (e.g. for upgrading to Websockets protocol).
  • New function makeConnection for constructing a Connection object over custom streams.

  • New functions unsafeReceiveResponse and unsafeReceiveResponseRaw that do not automatically skip to end-of-stream.

  • New alternative connection-setup API (ConnectionAddress et al.).
  • New function getHeaderMap for exporting all response headers at once.
  • Add convenience functions bytestringBody, lazyBytestringBody, utf8TextBody, utf8LazyTextBody.
  • Add support for Brotli HTTP compression.

  • First version. Released on an unsuspecting world.
  • Derived from http-streams-core- & http-common-