golang post请求常用的几种方式小结
post请求常用的几种方式,记录一下
func httpPost() { resp, err := http.Post("https://www.abcd123.top/api/v1/login", "application/x-www-form-urlencoded", strings.NewReader("username=test&password=ab123123")) if err != nil { fmt.Println(err) } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { // handle error } fmt.Println(string(body)) } func httpPostForm() { resp, err := http.PostForm("https://www.denlery.top/api/v1/login", url.Values{"username": {"auto"}, "password": {"auto123123"}}) if err != nil { // handle error } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { // handle error } fmt.Println(string(body)) } func httpPostJson() { jsonStr :=[]byte(`{ "username": "auto", "password": "auto123123" }`) url:= "https://www.denlery.top/api/v1/login" req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonStr)) req.Header.Set("Content-Type", "application/json") client := &http.Client{} resp, err := client.Do(req) if err != nil { // handle error } defer resp.Body.Close() statuscode := resp.StatusCode hea := resp.Header body, _ := ioutil.ReadAll(resp.Body) fmt.Println(string(body)) fmt.Println(statuscode) fmt.Println(hea) }
补充:golang中发送post的json请求
看代码吧~
package main import ( "encoding/json" "log" "net/http" ) type test_struct struct { Test string } //func test(rw http.ResponseWriter, req *http.Request) { // req.ParseForm() // log.Println(req.Form) // //LOG: map[{"test": "that"}:[]] // var t test_struct // for key, _ := range req.Form { // log.Println(key) // //LOG: {"test": "that"} // err := json.Unmarshal([]byte(key), &t) // if err != nil { // log.Println(err.Error()) // } // } // log.Println(t.Test) // //LOG: that //} func test(rw http.ResponseWriter, req *http.Request) { decoder := json.NewDecoder(req.Body) var t test_struct err := decoder.Decode(&t) if err != nil { panic(err) } log.Println(t.Test) } func main() { http.HandleFunc("/test", test) log.Fatal(http.ListenAndServe(":8082", nil)) }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。
赞 (0)