http-conduit-2.1.11: HTTP client package with conduit interface and HTTPS support.

Safe HaskellNone
LanguageHaskell98

Network.HTTP.Simple

Contents

Description

Simplified interface for common HTTP client interactions. Tutorial available at https://github.com/commercialhaskell/jump/blob/master/doc/http-client.md.

Important note: Request is an instance of IsString, and therefore recommended usage is to turn on OverloadedStrings, e.g.

@@@ {--} import Network.HTTP.Simple import qualified Data.ByteString.Lazy.Char8 as L8

main :: IO () main = httpLBS "http://example.com" >>= L8.putStrLn @@@

Synopsis

Perform requests

httpLBS :: MonadIO m => Request -> m (Response ByteString) Source

Perform an HTTP request and return the body as a lazy ByteString. Note that the entire value will be read into memory at once (no lazy I/O will be performed).

Since: 2.1.10

httpJSON :: (MonadIO m, FromJSON a) => Request -> m (Response a) Source

Perform an HTTP request and parse the body as JSON. In the event of an JSON parse errors, a JSONException runtime exception will be thrown.

Since: 2.1.10

httpJSONEither :: (MonadIO m, FromJSON a) => Request -> m (Response (Either JSONException a)) Source

Perform an HTTP request and parse the body as JSON. In the event of an JSON parse errors, a Left value will be returned.

Since: 2.1.10

httpSink :: (MonadIO m, MonadMask m) => Request -> (Response () -> Sink ByteString m a) -> m a Source

Perform an HTTP request and consume the body with the given Sink

Since: 2.1.10

Types

data Request :: *

data Response body :: * -> *

Instances

data JSONException Source

An exception that can occur when parsing JSON

Since: 2.1.10

data Proxy :: *

Constructors

Proxy 

Request constructions

Request lenses

Basics

setRequestMethod :: ByteString -> Request -> Request Source

Set the request method

Since: 2.1.10

setRequestSecure :: Bool -> Request -> Request Source

Set whether this is a secureHTTPS (True) or insecureHTTP (False) request

Since: 2.1.10

setRequestHost :: ByteString -> Request -> Request Source

Set the destination host of the request

Since: 2.1.10

setRequestPort :: Int -> Request -> Request Source

Set the destination port of the request

Since: 2.1.10

setRequestPath :: ByteString -> Request -> Request Source

Lens for the requested path info of the request

Since: 2.1.10

addRequestHeader :: HeaderName -> ByteString -> Request -> Request Source

Add a request header name/value combination

Since: 2.1.10

getRequestHeader :: HeaderName -> Request -> [ByteString] Source

Get all request header values for the given name

Since: 2.1.10

setRequestHeader :: HeaderName -> [ByteString] -> Request -> Request Source

Set the given request header to the given list of values. Removes any previously set header values with the same name.

Since: 2.1.10

setRequestHeaders :: [(HeaderName, ByteString)] -> Request -> Request Source

Set the request headers, wiping out any previously set headers

Since: 2.1.10

setRequestQueryString :: [(ByteString, Maybe ByteString)] -> Request -> Request Source

Set the query string parameters

Since: 2.1.10

getRequestQueryString :: Request -> [(ByteString, Maybe ByteString)] Source

Get the query string parameters

Since: 2.1.10

Request body

setRequestBody :: RequestBody -> Request -> Request Source

Set the request body to the given RequestBody. You may want to consider using one of the convenience functions in the modules, e.g. requestBodyJSON.

Note: This will not modify the request method. For that, please use requestMethod. You likely don't want the default of GET.

Since: 2.1.10

setRequestBodyJSON :: ToJSON a => a -> Request -> Request Source

Set the request body as a JSON value

Note: This will not modify the request method. For that, please use requestMethod. You likely don't want the default of GET.

This also sets the content-type to application/json; chatset=utf8

Since: 2.1.10

setRequestBodyLBS :: ByteString -> Request -> Request Source

Set the request body as a lazy ByteString

Note: This will not modify the request method. For that, please use requestMethod. You likely don't want the default of GET.

Since: 2.1.10

setRequestBodySource Source

Arguments

:: Int64

length of source

-> Source IO ByteString 
-> Request 
-> Request 

Set the request body as a Source

Note: This will not modify the request method. For that, please use requestMethod. You likely don't want the default of GET.

Since: 2.1.10

setRequestBodyFile :: FilePath -> Request -> Request Source

Set the request body as a file

Note: This will not modify the request method. For that, please use requestMethod. You likely don't want the default of GET.

Since: 2.1.10

setRequestBodyURLEncoded :: [(ByteString, ByteString)] -> Request -> Request Source

Set the request body as URL encoded data

Note: This will not modify the request method. For that, please use requestMethod. You likely don't want the default of GET.

This also sets the content-type to application/x-www-form-urlencoded

Since: 2.1.10

Special fields

setRequestIgnoreStatus :: Request -> Request Source

Modify the request so that non-2XX status codes do not generate a runtime exception.

Since: 2.1.10

setRequestBasicAuth Source

Arguments

:: ByteString

username

-> ByteString

password

-> Request 
-> Request 

Set basic auth with the given username and password

Since: 2.1.10

setRequestManager :: Manager -> Request -> Request Source

Instead of using the default global Manager, use the supplied Manager.

Since: 2.1.10

setRequestProxy :: Maybe Proxy -> Request -> Request Source

Override the default proxy server settings

Since: 2.1.10

Response lenses

getResponseStatus :: Response a -> Status Source

Get the status of the response

Since: 2.1.10

getResponseStatusCode :: Response a -> Int Source

Get the integral status code of the response

Since: 2.1.10

getResponseHeader :: HeaderName -> Response a -> [ByteString] Source

Get all response header values with the given name

Since: 2.1.10

getResponseHeaders :: Response a -> [(HeaderName, ByteString)] Source

Get all response headers

Since: 2.1.10

getResponseBody :: Response a -> a Source

Get the response body

Since: 2.1.10

Alternate spellings

httpLbs :: MonadIO m => Request -> m (Response ByteString) Source

Alternate spelling of httpLBS

Since: 2.1.10