HTTP POST

HTTP POST发送二进制数据到服务端。

服务端应该如何解释这些数据取决于请求头中Content-Type的值。

POST Url-Encoded 数据

HTTP POST通常用于向服务端提交HTML网页中填写的表单数据。

表单数据是键值对的字典,其中键是字符串,值是字符串数组(通常只含单个元素)。

表单键值对通常以URL编码的数据格式发送,Content-Type需设置为application/x-www-form-urlencoded

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
	"net/url"
	"time"
)

func main() {
	client := &http.Client{}
	client.Timeout = time.Second * 15

	uri := "https://httpbin.org/post"
	data := url.Values{
		"name":  []string{"John"},
		"email": []string{"john@gmail.com"},
	}
	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)
}

最后更新于