//基本的GET請求 package main import ( "fmt" "io/ioutil" "net/http" ) func main() { resp, err := http.Get("http://www.hao123.com") if err != nil { fmt.Println(err) return } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) fmt.Println(string(body)) fmt.Println(resp.StatusCode) if resp.StatusCode == 200 { fmt.Println("ok") } }
package main import ( "fmt" "io/ioutil" "net/http" ) func main(){ resp, err := http.Get("http://www.baidu.com?name=Paul_Chan&age=26") if err != nil { fmt.Println(err) return } defer resp.Body.Close() body, _ := ioutil.ReadAll(resp.Body) fmt.Println(string(body)) }
若是咱們想要把一些參數作成變量而不是直接放到url中怎麼操做,代碼例子以下:html
package main import ( "fmt" "io/ioutil" "net/http" "net/url" ) func main(){ params := url.Values{} Url, err := url.Parse("http://www.baidu.com") if err != nil { return } params.Set("name","Paul_Chan") params.Set("age","26") //若是參數中有中文參數,這個方法會進行URLEncode Url.RawQuery = params.Encode() urlPath := Url.String() fmt.Println(urlPath) // https://www.baidu.com?age=26&name=Paul_chan resp,err := http.Get(urlPath) defer resp.Body.Close() body, _ := ioutil.ReadAll(resp.Body) fmt.Println(string(body)) }
package main import ( "encoding/json" "fmt" "io/ioutil" "net/http" ) type result struct { Args string `json:"args"` Headers map[string]string `json:"headers"` Origin string `json:"origin"` Url string `json:"url"` } func main() { resp, err := http.Get("http://xxx.com") if err != nil { return } defer resp.Body.Close() body, _ := ioutil.ReadAll(resp.Body) fmt.Println(string(body)) var res result _ = json.Unmarshal(body,&res) fmt.Printf("%#v", res) }
package main import ( "fmt" "io/ioutil" "net/http" ) func main() { client := &http.Client{} req,_ := http.NewRequest("GET","http://xxx.com",nil) req.Header.Add("name","Paul_Chan") req.Header.Add("age","26") resp,_ := client.Do(req) body, _ := ioutil.ReadAll(resp.Body) fmt.Printf(string(body)) }
從上述的結果能夠看出咱們設置的頭是成功了:golang
{ "args": {}, "headers": { "Accept-Encoding": "gzip", "Age": "26", "Host": "xxx.com", "Name": "Paul_Chan", "User-Agent": "Go-http-client/1.1" }, "origin": "211.138.20.170, 211.138.20.170", "url": "https://xxx.com" }
package main import ( "fmt" "io/ioutil" "net/http" "net/url" ) func main() { urlValues := url.Values{} urlValues.Add("name","Paul_Chan") urlValues.Add("age","26") resp, _ := http.PostForm("http://xxx.com/post",urlValues) body, _ := ioutil.ReadAll(resp.Body) fmt.Println(string(body)) } //結果以下: /****************** { "args": {}, "data": "", "files": {}, "form": { "age": "26", "name": "Paul_Chan" }, "headers": { "Accept-Encoding": "gzip", "Content-Length": "19", "Content-Type": "application/x-www-form-urlencoded", "Host": "httpbin.org", "User-Agent": "Go-http-client/1.1" }, "json": null, "origin": "211.138.20.170, 211.138.20.170", "url": "https://httpbin.org/post" } ******************/
另一種方式json
package main import ( "fmt" "io/ioutil" "net/http" "net/url" "strings" ) func main() { urlValues := url.Values{ "name":{"Paul_Chan"}, "age":{"26"}, } reqBody:= urlValues.Encode() resp, _ := http.Post("http://xxx.com/post", "text/html",strings.NewReader(reqBody)) body,_:= ioutil.ReadAll(resp.Body) fmt.Println(string(body)) } //結果以下: /************** { "args": {}, "data": "age=26&name=Paul_Chan", "files": {}, "form": {}, "headers": { "Accept-Encoding": "gzip", "Content-Length": "19", "Content-Type": "text/html", "Host": "httpbin.org", "User-Agent": "Go-http-client/1.1" }, "json": null, "origin": "211.138.20.170, 211.138.20.170", "url": "https://httpbin.org/post" } ***************/
package main import ( "bytes" "encoding/json" "fmt" "io/ioutil" "net/http" ) func main() { client := &http.Client{} data := make(map[string]interface{}) data["name"] = "zhaofan" data["age"] = "23" bytesData, _ := json.Marshal(data) req, _ := http.NewRequest("POST","http://httpbin.org/post",bytes.NewReader(bytesData)) resp, _ := client.Do(req) body, _ := ioutil.ReadAll(resp.Body) fmt.Println(string(body)) } //結果以下: /************* { "args": {}, "data": "{\"age\":\"23\",\"name\":\"zhaofan\"}", "files": {}, "form": {}, "headers": { "Accept-Encoding": "gzip", "Content-Length": "29", "Host": "httpbin.org", "User-Agent": "Go-http-client/1.1" }, "json": { "age": "23", "name": "zhaofan" }, "origin": "211.138.20.170, 211.138.20.170", "url": "https://httpbin.org/post" } *************/
package main import ( "bytes" "encoding/json" "fmt" "io/ioutil" "net/http" ) func main() { data := make(map[string]interface{}) data["name"] = "zhaofan" data["age"] = "23" bytesData, _ := json.Marshal(data) resp, _ := http.Post("http://httpbin.org/post","application/json", bytes.NewReader(bytesData)) body, _ := ioutil.ReadAll(resp.Body) fmt.Println(string(body)) }