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

【转自 http://www.01happy.com/golang-http-client-get-and-post/ 】

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

完整代码示例文件下载:golang_http_client发起get和post代码示例

时间: 2024-11-07 15:46:52

golang使用http client发起get和post请求示例的相关文章

Python向PHP发起GET与POST请求

CloudBean项目中到PHP开发WEB管理端,用Python开发服务控制端,在项目中Python的服务控制端有时候需要主动连接PHP的WEB管理端下载或上传配置参数或数据信息,这里采用的原理是Python模拟Http客户端,向PHP所在的Apache发起Get或Post请求. 这里将实现的技术代码进行公开. 一.Python以GET请求的方式,请求PHP页面,并获得返回值 1.python代码: <span xmlns="http://www.w3.org/1999/xhtml&quo

python 爬虫 基于requests模块发起ajax的get请求

基于requests模块发起ajax的get请求 需求:爬取豆瓣电影分类排行榜 https://movie.douban.com/中的电影详情数据 用抓包工具捉取 使用ajax加载页面的请求 鼠标往下下滚轮拖动页面,会加载更多的电影信息,这个局部刷新是当前页面发起的ajax请求, 用抓包工具捉取页面刷新的ajax的get请求,捉取滚轮在最底部时候发起的请求 这个get请求是本次发起的请求的url ajax的get请求携带参数 获取响应内容不再是页面数据,是json字符串,是通过异步请求获取的电影

Elasticsearch High Level Rest Client 发起请求的过程分析

本文讨论的是JAVA High Level Rest Client向ElasticSearch6.3.2发送请求(index操作.update.delete--)的一个详细过程的理解,主要涉及到Rest Client如何选择哪一台Elasticsearch服务器发起请求. maven依赖如下: <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-

GOLang(第二篇 发起一个Http请求)

import ( "net/http" "net/url" ) //发送一个简单的get请求 func GetRequest { //联系使用 make(map[string]string) queryData := make(map[string]string) //创建空间, queryData["params"] = c.QueryParam("params") u, _ := url.Parse("http:

golang 利用http.Client POST数据

package main import ( "fmt" "io/ioutil" "net/http" "net/url" "strings" ) func main() { v := url.Values{} v.Set("huifu", "hello world") body := ioutil.NopCloser(strings.NewReader(v.Encod

.NET/C#发起GET和POST请求的几种方法

using System.Net; GET: 1 2 3 var request = (HttpWebRequest)WebRequest.Create("http://www.leadnt.com/recepticle.aspx"); var response = (HttpWebResponse)request.GetResponse(); var responseString = new StreamReader(response.GetResponseStream()).Rea

C. 发起对服务器的请求

一,ajax发起对服务器端请求的步骤     原文地址:https://www.cnblogs.com/youyuanjuyou/p/8256855.html

用JQuery的$.getJSON发起跨域Ajax请求

jQuery中常用getJSON来调用并获取远程的JSON字符串,将其转换为JSON对象,如果成功,则执行回调函数.原型如下: jQuery.getJSON( url, [data], [callback] )  跨域加载JSON数据.伊川县第二中学 url:     发送请求的地址 data : (可选) 待发送key/value参数 callback: (可选) 载入成功时的回调函数 主要用于客户端获取服务器JSON数据.简单示例: 服务器脚本,返回JSON数据: view source p

Supermap iserver client 空间查询关联属性过滤示例

点查询并根据属性条件过滤示例代码 //关联外表 var joinItem=new SuperMap.REST.JoinItem({ foreignTableName: "V_REGION_LAND", joinFilter: "BBS_PARCEL.CADASTRALNO = V_REGION_LAND.CADASTRALNO ", joinType: "INNERJOIN" }); var queryParam, queryByGeometry