Wenn noch jemand Antworten dazu findet, mache ich das so.
package main
import (
"bytes"
"io/ioutil"
"log"
"net/http"
"time"
)
var httpClient *http.Client
const (
MaxIdleConnections int = 20
RequestTimeout int = 5
)
func init() {
httpClient = createHTTPClient()
}
func createHTTPClient() *http.Client {
client := &http.Client{
Transport: &http.Transport{
MaxIdleConnsPerHost: MaxIdleConnections,
},
Timeout: time.Duration(RequestTimeout) * time.Second,
}
return client
}
func main() {
endPoint := "https://localhost:8080/doSomething"
req, err := http.NewRequest("POST", endPoint, bytes.NewBuffer([]byte("Post this data")))
if err != nil {
log.Fatalf("Error Occured. %+v", err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
response, err := httpClient.Do(req)
if err != nil && response == nil {
log.Fatalf("Error sending request to API endpoint. %+v", err)
}
defer response.Body.Close()
body, err := ioutil.ReadAll(response.Body)
if err != nil {
log.Fatalf("Couldn't parse response body. %+v", err)
}
log.Println("Response Body:", string(body))
}
Go Playground: http://play.golang.org/p/oliqHLmzSX
Zusammenfassend erstelle ich eine andere Methode, um einen HTTP-Client zu erstellen, ihn einer globalen Variablen zuzuweisen und ihn dann zum Erstellen von Anforderungen zu verwenden. Beachten Sie das
defer response.Body.Close()
Dadurch wird die Verbindung geschlossen und wieder für die Wiederverwendung vorbereitet.
Hoffe das wird jemandem helfen.