這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
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
,自己感覺哈
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
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
介面就行