首页 > 文章列表 > golang post请求常用的几种方式小结

golang post请求常用的几种方式小结

golang
115 2022-12-17

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))

}