Skip to content


Subversion checkout URL

You can clone with
Download ZIP
a Go HTTP client with timeouts
Branch: master

Merge pull request #21 from ncw/fix-rw-deadline

Fix read tcp i/o timeout on PUT operations with persistent connections
latest commit c9572fd0db
@mreiferson authored


requires Go 1.1+ as of v0.4.0 the API has been completely re-written for Go 1.1 (for a Go 1.0.x compatible release see 1adef50)


Provides an HTTP Transport that implements the RoundTripper interface and can be used as a built in replacement for the standard library's, providing:

  • connection timeouts
  • request timeouts

This is a thin wrapper around http.Transport that sets dial timeouts and uses Go's internal timer scheduler to call the Go 1.1+ CancelRequest() API.


transport := &httpclient.Transport{
    ConnectTimeout:        1*time.Second,
    RequestTimeout:        10*time.Second,
    ResponseHeaderTimeout: 5*time.Second,
defer transport.Close()

client := &http.Client{Transport: transport}
req, _ := http.NewRequest("GET", "", nil)
resp, err := client.Do(req)
if err != nil {
    return err
defer resp.Body.Close()

Note: you will want to re-use a single client object rather than creating one for each request, otherwise you will end up leaking connections.

Reference Docs

For API docs see godoc.

Something went wrong with that request. Please try again.