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>
相关推荐
本文将详细介绍如何使用`net/http`包发起GET和POST请求,并提供相关的示例代码。 首先,了解HTTP的基本概念非常重要。HTTP(超文本传输协议)是互联网上应用最广泛的一种网络协议,它定义了客户端(如Web浏览器)和...
创建一个新的HTTP客户端和请求对象,然后使用`client.Do`方法发送请求。以下是一个简单的示例: ```go package main import ( "fmt" "io" "net/http" "os" ) func main() { // 创建默认HTTP客户端 client :...
此函数接收三个参数:请求方法(如"GET")、目标URL和请求体(此处为`nil`表示无请求体)。 - **设置请求头**:使用`reqest.Header.Add()`方法可以在请求头中添加自定义键值对。这里的`Add`方法允许多次调用以添加...
### Golang语言网络编程知识点详解 ...以上示例展示了如何使用Go语言进行网络编程的基本操作,包括Socket编程、HTTP编程以及RPC编程的核心概念和技术细节。这些基础知识对于开发高质量的网络应用程序至关重要。
在Golang中,我们可以使用`net/http`库来发起HTTP请求,并处理响应。 在`Google.js`文件中,可能包含了用于与Google翻译API交互的JavaScript代码。通常,JavaScript代码会通过AJAX或者Fetch API来发送异步请求。...
本文将深入探讨Go-Pizzeria的特性和使用方法,帮助你更好地理解和应用这个强大的工具。 一、Go-Pizzeria简介 Go-Pizzeria是基于Go语言构建的开源项目,其主要功能是生成各种类型的图表,如柱状图、饼图、线图等,...
它由消息调度程序和http处理函数组成。 消息传递系统在运行时启动: func main () { server := sse . New () } 要将流添加到此处理程序: func main () { server := sse . New () server . CreateStream ( ...
cURL命令通常包含URL、HTTP方法(如GET、POST)、Header信息、查询参数和请求体。将cURL转换为Python代码时,我们需要解析这些元素并用`requests`的相应方法表示。例如,一个简单的GET请求cURL命令可能如下: ``` ...
例如,可以创建一个`http.Client`实例,使用`Do`方法发起请求,然后用`ReadAll`读取响应体内容。此外,可能还会使用第三方库如`json.Unmarshal`来解码JSON响应到Go结构体。 代码示例可能包含以下片段: ```go ...
RESTful API通常包括CRUD(创建、读取、更新、删除)操作,对应HTTP的GET、POST、PUT和DELETE方法。 在Go语言中,构建API通常使用标准库"net/http"和第三方库如"github.com/gin-gonic/gin"或"github....
2. **客户端请求的发起**:`http.Get`, `http.Post`, 和 `http.PostForm`等方法允许你快速发送不同类型的HTTP请求。 3. **服务器端的处理**:通过`http.ServeHTTP`函数,你可以定义自己的处理器(Handler)来响应...
Gin提供了一个方便的方法`c.ClientIP()`来获取客户端的IP地址,它会检查`X-Forwarded-For`和`X-Real-IP`请求头来获取真实的IP。 ### 返回响应 Gin提供了多种方式来设置返回的响应: 1. `c.String(code int, ...
通过这个包,开发者可以轻松地创建HTTP服务器,处理请求和响应,支持各种HTTP方法(如GET、POST等)。在这个项目中,`file_download_proxy`服务利用了net/http包的功能来接收客户端的下载请求,并转发到实际的文件...
1. **http.Get**:用于发送GET请求,并获取响应。 - **函数原型**:`func (c *Client) Get(url string) (r *Response, err error)` - **示例**: ```go resp, err := http.Get("http://example.com/") if err !...
RESTful API通常使用HTTP方法(GET、POST、PUT、DELETE等)来操作资源,使得客户端和服务器之间的通信更加清晰和直观。 Go-resty库的出现,正是为了简化Go语言中实现REST客户端的复杂性。以下是一些Go-resty的关键...
`go-curl`项目主要目标是为Go开发者提供一个易于理解和使用的HTTP客户端库,使得他们能够方便地发起HTTP请求,如GET、POST、PUT等,并能处理响应数据。该项目借鉴了命令行工具curl的功能,但完全用Go语言编写,因此...
在实际应用中,我们可以进一步扩展此工具,例如,增加请求负载、支持不同的HTTP方法(GET、POST等)、添加请求头、携带请求体、记录详细的性能指标(如TCP连接时间、TLS握手时间等),甚至可以实现自定义的拨测策略...
以下是一些在实际工作中常用到的Golang代码示例: 1. **使用http包发送带有认证信息的请求**: 在Golang中,我们可以使用`http`包的`SetBasicAuth`方法来设置HTTP基本认证。以下是如何发送一个带有`user:passwd`的...