golang使用http client发起get和post请求示例

 更新时间:2020年02月12日 09:47:27   作者:排骨瘦肉丁  
这篇文章主要介绍了golang使用http client发起get和post请求示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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

get请求

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方式

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方法

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方法。

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方法,比较简单,这里就不再说明。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • go语言实现AES加密的方法

    go语言实现AES加密的方法

    这篇文章主要介绍了go语言实现AES加密的方法,实例分析了Go语言的加密技巧,需要的朋友可以参考下
    2015-03-03
  • 详解golang 模板(template)的常用基本语法

    详解golang 模板(template)的常用基本语法

    这篇文章主要介绍了详解golang 模板(template)的常用基本语法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • GO接收GET/POST参数及发送GET/POST请求的实例详解

    GO接收GET/POST参数及发送GET/POST请求的实例详解

    这篇文章主要介绍了GO接收GET/POST参数及发送GET/POST请求,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Go语言展现快速排序算法全过程的思路及代码示例

    Go语言展现快速排序算法全过程的思路及代码示例

    这篇文章主要介绍了Go语言展现快速排序算法全过程的思路及代码示例,文章最后作者还提到了对Quick Sort算法优化的一些想法,需要的朋友可以参考下
    2016-04-04
  • Golang中Delve版本太低无法Debug的问题

    Golang中Delve版本太低无法Debug的问题

    这篇文章主要介绍了Golang中Delve版本太低无法Debug的问题,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • Golang加密解密之RSA(附带php)

    Golang加密解密之RSA(附带php)

    安全总是很重要的,各个语言对于通用的加密算法都会有实现。本文先是对RSA算法进行了简单介绍,后才进行介绍如何用Go实现RSA的加密解密,下面一起来看看吧。
    2016-08-08
  • golang顺时针打印矩阵的方法示例

    golang顺时针打印矩阵的方法示例

    这篇文章主要介绍了golang顺时针打印矩阵的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • golang时间字符串和时间戳转换的案例

    golang时间字符串和时间戳转换的案例

    这篇文章主要介绍了golang时间字符串和时间戳转换的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • golang常用手册之切片(Slice)原理

    golang常用手册之切片(Slice)原理

    本篇文章主要介绍了golang常用手册之切片(Slice)原理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • Go语言排序算法之插入排序与生成随机数详解

    Go语言排序算法之插入排序与生成随机数详解

    从这篇文章开始将带领大家学习Go语言的经典排序算法,比如插入排序、选择排序、冒泡排序、希尔排序、归并排序、堆排序和快排,二分搜索,外部排序和MapReduce等,本文将先详细介绍插入排序,并给大家分享了go语言生成随机数的方法,下面来一起看看吧。
    2017-11-11

最新评论