加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang实现http的get和post

发布时间:2020-12-16 19:13:58 所属栏目:大数据 来源:网络整理
导读:golang要请求远程网页,可以使用net/http包中的client提供的方法实现。查看了官方网站有一些示例,没有太全面的例子,于是自己整理了一下。 get请求 get请求可以直接http.Get方法,非常简单。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 func httpGet() { resp,err :

golang要请求远程网页,可以使用net/http包中的client提供的方法实现。查看了官方网站有一些示例,没有太全面的例子,于是自己整理了一下。

get请求

get请求可以直接http.Get方法,非常简单。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

func httpGet() {

resp,err := http.Get("http://www.01happy.com/demo/accept.php?id=1")

if err != nil {

// handle error

}

defer resp.Body.Close()

body,err := ioutil.ReadAll(resp.Body)

if err != nil {

// handle error

}

fmt.Println(string(body))

}

post请求

一种是使用http.Post方式

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

func httpPost() {

resp,err := http.Post("http://www.01happy.com/demo/accept.php",

"application/x-www-form-urlencoded",

strings.NewReader("name=cjb"))

if err != nil {

fmt.Println(err)

}

defer resp.Body.Close()

body,err := ioutil.ReadAll(resp.Body)

if err != nil {

// handle error

}

fmt.Println(string(body))

}

Tips:使用这个方法的话,第二个参数要设置成”application/x-www-form-urlencoded”,否则post参数无法传递。

一种是使用http.PostForm方法

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

func httpPostForm() {

resp,err := http.PostForm("http://www.01happy.com/demo/accept.php",

url.Values{"key": {"Value"},"id": {"123"}})

if err != nil {

// handle error

}

defer resp.Body.Close()

body,err := ioutil.ReadAll(resp.Body)

if err != nil {

// handle error

}

fmt.Println(string(body))

}

复杂的请求

有时需要在请求的时候设置头参数、cookie之类的数据,就可以使用http.Do方法。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

func httpDo() {

client := &http.Client{}

req,err := http.NewRequest("POST","http://www.01happy.com/demo/accept.php",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))

}

同上面的post请求,必须要设定Content-Type为application/x-www-form-urlencoded,post参数才可正常传递。

如果要发起head请求可以直接使用http client的head方法,比较简单,这里就不再说明。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读