Essential Go HTTP Client  Suggest an edit


HTTP POST sends binary data to the server.

How this data is interpreted by the server depends on the value of Content-Type header.

HTTP POST with url-encoded data

HTTP POST is most often used to submit filled forms data in HTML page to the server.

Form data is a dictionary of key/value pairs where key is a string and value is array of strings (most often array with a single element).

Form key/value pairs are most often sent as url-encoded data with Content-Type of application/x-www-form-urlencoded.

client := &http.Client{}
client.Timeout = time.Second * 15

uri := ""
data := url.Values{
	"name":  []string{"John"},
	"email": []string{""},
resp, err := client.PostForm(uri, data)
if err != nil {
	log.Fatalf("client.PosFormt() failed with '%s'\n", err)
defer resp.Body.Close()
_, err = ioutil.ReadAll(resp.Body)
if err != nil {
	log.Fatalf("ioutil.ReadAll() failed with '%s'\n", err)

fmt.Printf("PostForm() sent '%s'. Response status code: %d\n", data.Encode(), resp.StatusCode)
PostForm() sent ''. Response status code: 200

  ↑ ↓ to navigate     ↵ to select     Esc to close