http提交数据次要通过post办法实现,在提交不同格局的数据时最大的不同点在于数据的组织模式不同,同时须要设置不同格局对应的Content-type格局

package mainimport (   "bytes"   "encoding/json"   "fmt"   "io"   "io/ioutil"   "mime/multipart"   "net/http"   "net/url"   "os"   "strings")func postForm(){   data := make(url.Values)   data.Add("name", "yuan")   data.Add("age", "18")   payload := data.Encode()   resp, err := http.Post("http://httpbin.org/post", "application/x-www-form-urlencoded", strings.NewReader(payload))   if err != nil {      panic(err)   }   defer func() {_ = resp.Body.Close()}()   content, err := ioutil.ReadAll(resp.Body)   fmt.Printf("%s", content)   //{   // "args": {},   // "data": "",   // "files": {},   // "form": {   //     "age": "18",   //    "name": "yuan"   //  },   // "headers": {   //     "Accept-Encoding": "gzip",   //    "Content-Length": "16",   //    "Content-Type": "application/x-www-form-urlencoded",   //    "Host": "httpbin.org",   //    "User-Agent": "Go-http-client/1.1",   //    "X-Amzn-Trace-Id": "Root=1-60e4770f-2a5448187a3ae2d560ebf3ff"   //  },   // "json": null,   // "origin": "222.211.214.252",   // "url": "http://httpbin.org/post"   //}}func postJson() {   u := struct {      Name string `json:"name"`      Age int `json:"age"`   }{      Name: "yuan",      Age: 18,   }   payload, _ := json.Marshal(u)   //data := make(url.Values)   //data.Add("name", "yuan")   //data.Add("age", "18")   //payload := data.Encode()   resp, err := http.Post("http://httpbin.org/post", "application/json", bytes.NewReader(payload))   if err != nil {      panic(err)   }   defer func() { _ = resp.Body.Close() }()   content, err := ioutil.ReadAll(resp.Body)   fmt.Printf("%s", content)   //{   // "args": {},   // "data": "{\"name\":\"yuan\",\"age\":18}",   // "files": {},   // "form": {},   // "headers": {   // "Accept-Encoding": "gzip",   //    "Content-Length": "24",   //    "Content-Type": "application/json",   //    "Host": "httpbin.org",   //    "User-Agent": "Go-http-client/1.1",   //    "X-Amzn-Trace-Id": "Root=1-60e47872-48e5cb7c65ce959f03544ffb"   //},   // "json": {   // "age": 18,   //    "name": "yuan"   //},   // "origin": "222.211.214.252",   // "url": "http://httpbin.org/post"   //}}func postFile(){   body := &bytes.Buffer{}   writer := multipart.NewWriter(body)   upload1, _ := writer.CreateFormFile("formName1", "test.txt")   uploadFile1, _:= os.Open("test.txt")   defer uploadFile1.Close()   io.Copy(upload1, uploadFile1)   upload2, _ := writer.CreateFormFile("formName2", "test.txt")   uploadFile2, _:= os.Open("test.txt")   defer uploadFile2.Close()   io.Copy(upload2, uploadFile2)   writer.Close()   //以上数据组织实现   fmt.Println(writer.FormDataContentType())   resp, err := http.Post("http://httpbin.org/post", writer.FormDataContentType(), body)   if err != nil {      panic(err)   }   defer func() {_ = resp.Body.Close()}()   content, _ := ioutil.ReadAll(resp.Body)   fmt.Printf("%s", content)   //{   // "args": {},   // "data": "",   // "files": {   //    "formName1": "qwqwertwertwertwert",   //    "formName2": "qwqwertwertwertwert"   //  },   // "form": {},   // "headers": {   //    "Accept-Encoding": "gzip",   //    "Content-Length": "462",   //    "Content-Type": "multipart/form-data; boundary=c7d43bcbc370e8f128df077361e7f5551970ee279eb483fc4c1a7016e68f",   //    "Host": "httpbin.org",   //    "User-Agent": "Go-http-client/1.1",   //    "X-Amzn-Trace-Id": "Root=1-60e4806a-501ee1f8562afc5c74143bcf"   //  },   // "json": null,   // "origin": "222.211.214.252",   // "url": "http://httpbin.org/post"   //}}func main(){   //postForm() //post 表单   //postJson() //post Json   postFile() //post file}