GET
請求
get請求能夠直接使用
http.Get
方法
func main(){ resp, err := http.Get("https://baidu.com") if err != nil { panic(err) } defer resp.Body.Close() s,err:=ioutil.ReadAll(resp.Body) fmt.Printf(string(s)) }
func main() { params := url.Values{} Url, err := url.Parse("http://baidu.com?fd=fdsf") if err != nil { panic(err.Error()) } params.Set("a", "fdfds") params.Set("id", string("1")) //若是參數中有中文參數,這個方法會進行URLEncode Url.RawQuery = params.Encode() urlPath := Url.String() resp, err := http.Get(urlPath) defer resp.Body.Close() s, err := ioutil.ReadAll(resp.Body) fmt.Println(string(s)) }
這個params.set
是否是感受跟php裏的http_build_query
,本身感受哈php
POST
請求
使用
http.post
type Server struct { ServerName string ServerIp string } type ServerSlice struct { Server []Server ServersID string } func main() { //post 第三個參數是io.reader interface //strings.NewReader byte.NewReader bytes.NewBuffer 實現了read 方法 s := ServerSlice{ServersID: "tearm", Server: []Server{{"beijing", "127.0.0.1"}, {"shanghai", "127.0.0.1"}}} b, _ := json.Marshal(s) fmt.Println(string(b)) resp, _ := http.Post("http://baidu.com", "application/x-www-form-urlencoded", strings.NewReader("heel="+string(b))) // defer resp.Body.Close() //io.Reader body, _ := ioutil.ReadAll(resp.Body) fmt.Println(string(body))
使用
http.PostForm
func httpPostForm() { // params:=url.Values{} // params.Set("hello","fdsfs") //這兩種均可以 params= url.Values{"key": {"Value"}, "id": {"123"}} resp, _:= http.PostForm("http://baidu.com", body) defer resp.Body.Close() body, _:= ioutil.ReadAll(resp.Body) fmt.Println(string(body)) }
若是須要設置頭參數,cookie之類的數據,就能夠使用http.Do
json
func httpDo() { client := &http.Client{} req, err := http.NewRequest("POST", "baidu.com", strings.NewReader("name=cjb")) if err != nil { // handle error } req.Header.Set("Content-Type", "application/x-www-form-urlencoded") req.Header.Set("Cookie", "name=anny") resp, err := client.Do(req) defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { // handle error } fmt.Println(string(body)) }
一樣的http.NewRequest
第三個參數只須要實現io.reader
接口就行cookie