I am trying to control keep-alives session to reuse the tcp connection by creating a Trasport.
Here is my snippet and I am not sure how to add headers info for authentication.
url := "http://localhost:8181/api/v1/resource"
tr := &http.Transport{
DisableKeepAlives: false,
MaxIdleConns: 0,
MaxIdleConnsPerHost: 0,
IdleConnTimeout: time.Second * 10,
}
client := &http.Client{Transport: tr}
resp, err := client.Get(url)
Don't mix the Client from the Request.
The client uses a Transport and run the request: client.Do(req)
You set header on the http.Request
with (h Header) Set(key, value string)
:
req.Header.Set("name", "value")
This is what I found:
package main
import (
"fmt"
"io/ioutil"
"net/http"
)
var URL = "http://httpbin.org/ip"
func main() {
tr := &http.Transport{DisableKeepAlives: false}
req, _ := http.NewRequest("GET", URL, nil)
req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", "Token"))
req.Close = false
res, err := tr.RoundTrip(req)
if err != nil {
fmt.Println(err)
}
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(string(body))
}
And it works.