Go - Sending HTTP Requests
Updated at 2015-08-29 21:27
Basic HTTP request. Remember to close request body after read and check for nil response.
package main
import (
"io/ioutil"
"net/http"
"strings"
)
func assert(condition bool) {
if !condition {
panic("assert failed")
}
}
func check(err error) {
if err != nil {
panic(err)
}
}
func main() {
resp, err := http.Get("http://www.google.com")
if resp != nil {
defer resp.Body.Close()
}
check(err)
body, err := ioutil.ReadAll(resp.Body)
check(err)
assert(strings.HasPrefix(string(body), "<!doctype html"))
}
Consider closing requests right after a response. Important if doing a lot of requests to different HTTP servers. But it's a good practice to keep connections open if you are doing multiple requests to the same server.
package main
import (
"fmt"
"io/ioutil"
"net/http"
)
func main() {
req, err := http.NewRequest("GET", "http://golang.org", nil)
if err != nil {
fmt.Println(err)
return
}
req.Close = true // or req.Header.Add("Connection", "close")
resp, err := http.DefaultClient.Do(req)
if resp != nil {
defer resp.Body.Close()
}
if err != nil {
fmt.Println(err)
return
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(len(string(body)))
}