`

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

 
阅读更多

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

get请求

get请求可以直接http.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方法,比较简单,这里就不再说明。

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

<!-- 336x280 --> <iframe id="aswift_1" style="left: 0px; top: 0px; position: absolute;" name="aswift_1" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="336" height="280"></iframe>

转载请注明:快乐编程 » golang使用http client发起get和post请求示例

分享到:
评论

相关推荐

    Go语言中利用http发起Get和Post请求的方法示例

    本文将详细介绍如何使用`net/http`包发起GET和POST请求,并提供相关的示例代码。 首先,了解HTTP的基本概念非常重要。HTTP(超文本传输协议)是互联网上应用最广泛的一种网络协议,它定义了客户端(如Web浏览器)和...

    详解golang中发送http请求的几种常见情况

    创建一个新的HTTP客户端和请求对象,然后使用`client.Do`方法发送请求。以下是一个简单的示例: ```go package main import ( "fmt" "io" "net/http" "os" ) func main() { // 创建默认HTTP客户端 client :...

    Golang 发送http请求时设置header的实现

    此函数接收三个参数:请求方法(如"GET")、目标URL和请求体(此处为`nil`表示无请求体)。 - **设置请求头**:使用`reqest.Header.Add()`方法可以在请求头中添加自定义键值对。这里的`Add`方法允许多次调用以添加...

    Golang语言网络编程简要介绍,包含简单的示例

    ### Golang语言网络编程知识点详解 ...以上示例展示了如何使用Go语言进行网络编程的基本操作,包括Socket编程、HTTP编程以及RPC编程的核心概念和技术细节。这些基础知识对于开发高质量的网络应用程序至关重要。

    golang通过google 页面翻译参考代码

    在Golang中,我们可以使用`net/http`库来发起HTTP请求,并处理响应。 在`Google.js`文件中,可能包含了用于与Google翻译API交互的JavaScript代码。通常,JavaScript代码会通过AJAX或者Fetch API来发送异步请求。...

    Go-Pizzeria-golang开发的一个图表生成器API

    本文将深入探讨Go-Pizzeria的特性和使用方法,帮助你更好地理解和应用这个强大的工具。 一、Go-Pizzeria简介 Go-Pizzeria是基于Go语言构建的开源项目,其主要功能是生成各种类型的图表,如柱状图、饼图、线图等,...

    sse:服务器发送事件的Golang服务器和客户端

    它由消息调度程序和http处理函数组成。 消息传递系统在运行时启动: func main () { server := sse . New () } 要将流添加到此处理程序: func main () { server := sse . New () server . CreateStream ( ...

    cURL到Python Arrdio 易语言 Golang PowerQuery VBA 20210813.zip

    cURL命令通常包含URL、HTTP方法(如GET、POST)、Header信息、查询参数和请求体。将cURL转换为Python代码时,我们需要解析这些元素并用`requests`的相应方法表示。例如,一个简单的GET请求cURL命令可能如下: ``` ...

    Go开发语言彩信DEMO示例(含彩信接口文档).zip

    例如,可以创建一个`http.Client`实例,使用`Do`方法发起请求,然后用`ReadAll`读取响应体内容。此外,可能还会使用第三方库如`json.Unmarshal`来解码JSON响应到Go结构体。 代码示例可能包含以下片段: ```go ...

    golang-facebook-api:一个简单的Golang API

    RESTful API通常包括CRUD(创建、读取、更新、删除)操作,对应HTTP的GET、POST、PUT和DELETE方法。 在Go语言中,构建API通常使用标准库"net/http"和第三方库如"github.com/gin-gonic/gin"或"github....

    go http包翻译

    2. **客户端请求的发起**:`http.Get`, `http.Post`, 和 `http.PostForm`等方法允许你快速发送不同类型的HTTP请求。 3. **服务器端的处理**:通过`http.ServeHTTP`函数,你可以定义自己的处理器(Handler)来响应...

    golang 网络框架之gin的使用方法

    Gin提供了一个方便的方法`c.ClientIP()`来获取客户端的IP地址,它会检查`X-Forwarded-For`和`X-Real-IP`请求头来获取真实的IP。 ### 返回响应 Gin提供了多种方式来设置返回的响应: 1. `c.String(code int, ...

    Go-filedownloadproxy文件下载中转服务

    通过这个包,开发者可以轻松地创建HTTP服务器,处理请求和响应,支持各种HTTP方法(如GET、POST等)。在这个项目中,`file_download_proxy`服务利用了net/http包的功能来接收客户端的下载请求,并转发到实际的文件...

    Go语言网络编程-v0.0.1.pdf

    1. **http.Get**:用于发送GET请求,并获取响应。 - **函数原型**:`func (c *Client) Get(url string) (r *Response, err error)` - **示例**: ```go resp, err := http.Get("http://example.com/") if err !...

    开源项目-go-resty-resty.zip

    RESTful API通常使用HTTP方法(GET、POST、PUT、DELETE等)来操作资源,使得客户端和服务器之间的通信更加清晰和直观。 Go-resty库的出现,正是为了简化Go语言中实现REST客户端的复杂性。以下是一些Go-resty的关键...

    go-curl:用golang编写的简单url客户端

    `go-curl`项目主要目标是为Go开发者提供一个易于理解和使用的HTTP客户端库,使得他们能够方便地发起HTTP请求,如GET、POST、PUT等,并能处理响应数据。该项目借鉴了命令行工具curl的功能,但完全用Go语言编写,因此...

    Go-go语言实现的http2客户端拨测工具

    在实际应用中,我们可以进一步扩展此工具,例如,增加请求负载、支持不同的HTTP方法(GET、POST等)、添加请求头、携带请求体、记录详细的性能指标(如TCP连接时间、TLS握手时间等),甚至可以实现自定义的拨测策略...

    Golang开发中常用的代码片段汇总

    以下是一些在实际工作中常用到的Golang代码示例: 1. **使用http包发送带有认证信息的请求**: 在Golang中,我们可以使用`http`包的`SetBasicAuth`方法来设置HTTP基本认证。以下是如何发送一个带有`user:passwd`的...

Global site tag (gtag.js) - Google Analytics