server端示例:
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/test", func(w http.ResponseWriter, r *http.Request) {
if r.Method == "POST" {
var (
name string = r.PostFormValue("name")
id string = r.PostFormValue("id")
)
fmt.Printf("name-id is : %s %s\n", name, id)
}
})
err := http.ListenAndServe(":8888", nil)
if err != nil {
fmt.Println(err.Error())
return
}
}
client端示例
package main
import (
"fmt"
"net/http"
"net/url"
"strings"
)
func test1() {
data := make(url.Values)
data["name"] = []string{"xiaoming"}
data["id"] = []string{"123456"}
res, err := http.PostForm("http://127.0.0.1:8888/test", data)
if err != nil {
fmt.Println(err.Error())
return
}
defer res.Body.Close()
fmt.Println("[PostForm] request1 sent successfully.")
}
func test2() {
apiUrl := "http://127.0.0.1:8888"
resource := "/test"
data := url.Values{}
data.Set("name", "xiaohua")
data.Set("id", "654321")
u, _ := url.ParseRequestURI(apiUrl)
u.Path = resource
urlStr := u.String()
client := &http.Client{}
r, _ := http.NewRequest("POST", urlStr, strings.NewReader(data.Encode()))
r.Header.Add("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(r)
if err != nil {
fmt.Println(err.Error())
return
}
defer resp.Body.Close()
fmt.Println("[client.Do] request2 sent successfully.")
}
func main() {
test1()
test2()
}