全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

如何使用Golang实现HTTP客户端请求_发送GET和POST请求

Go标准库net/http提供简洁高效的HTTP客户端支持,可直接发送GET/POST请求;需正确构造Request、设置Header、处理请求体并关闭响应体;推荐用url.Values编码参数,POST表单用PostForm,JSON数据需手动序列化并设Content-Type;生产环境必须配置超时。

Go语言标准库 net/http 提供了简洁、高效、线程安全的HTTP客户端支持,无需额外依赖即可发送GET和POST请求。关键在于正确构造http.Request、设置必要的Header(如Content-Type)、处理请求体(尤其是POST),并及时关闭响应体。

发送GET请求(带查询参数)

GET请求通常将参数拼接在URL后。推荐使用url.Values构建查询字符串,避免手动拼接和编码错误。

示例代码:

package main

import ( "fmt" "io" "net/http" "net/url" )

func main() { // 构建查询参数 params := url.Values{} params.Set("q", "golang http client") params.Set("page", "1")

// 拼接完整URL
baseURL := "https://httpbin.org/get"
fullURL := baseURL + "?" + params.Encode()

// 发起GET请求
resp, err := http.Get(fullURL)
if err != nil {
    panic(err)
}
defer resp.Body.Close() // 必须关闭响应体,防止连接泄漏

// 读取响应内容
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))

}

发送POST请求(表单数据 application/x-www-form-urlencoded)

提交表单类数据时,需设置Content-Type: application/x-www-form-urlencoded,并将键值对用url.Values编码后作为请求体。

  • 使用http.PostForm可简化操作(自动设置Header和编码)
  • 若需更多控制(如自定义Header、超时),建议用http.NewRequest + http.DefaultClient.Do

示例(使用PostForm):

resp, err := http.PostForm("https://httpbin.org/post", url.Values{
    "name": {"Alice"},
    "age":  {"30"},
})
if err != nil {
    panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))

发送POST请求(JSON数据 application/json)

向API发送结构化数据常用JSON格式。需手动序列化结构体、设置Content-Type: application/json,并传入bytes.NewReader作为请求体。

示例:

import (
    "bytes"
    "encoding/json"
    "net/http"
)

type User struct { Name string json:"name" Age int json:"age" }

func postJSON() { user := User{Name: "Bob", Age: 25} jsonData, _ := json.Marshal(user)

req, _ := http.NewRequest("POST", "https://httpbin.org/post", bytes.NewBuffer(jsonData))
req.Header.Set("Content-Type", "application/json")

client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
    panic(err)
}
defer resp.Body.Close()

body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))

}

添加超时与自定义客户端

生产环境中必须设置超时,避免请求无限阻塞。通过http.Client配置Timeout或更精细的Transport参数。

  • Timeout:整个请求(连接+读写)的总时限
  • Transport中可单独控制IdleConnTimeoutTLSHandshakeTimeout

示例(带5秒超时):

client := &http.Client{
    Timeout: 5 * time.Second,
}

req, _ := http.NewRequest("GET", "https://www./link/c19fa3728a347ac2a373dbb5c44ba1c2", nil) resp, err := client.Do(req) // 若服务响应超过5秒,此处返回timeout错误


# js  # json  # go  # golang  # go语言  # 编码  # app  # ai  # 键值对  # 标准库  # 字符串  # 结构体  # 线程 


相关文章: 网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  ,怎么在广州志愿者网站注册?  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  文字头像制作网站推荐软件,醒图能自动配文字吗?  保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?  建站之星2.7模板:企业网站建设与h5定制设计专题  详解jQuery中基本的动画方法  北京企业网站设计制作公司,北京铁路集团官方网站?  娃派WAP自助建站:免费模板+移动优化,快速打造专业网站  网站制作的步骤包括,正确网址格式怎么写?  北京制作网站的公司,北京铁路集团官方网站?  如何在阿里云ECS服务器部署织梦CMS网站?  建站之家VIP精选网站模板与SEO优化教程整合指南  建站之星伪静态规则如何正确配置?  制作网站外包平台,自动化接单网站有哪些?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  微课制作网站有哪些,微课网怎么进?  Bpmn 2.0的XML文件怎么画流程图  建站之星Pro快速搭建教程:模板选择与功能配置指南  如何在云主机上快速搭建网站?  制作证书网站有哪些,全国城建培训中心证书查询官网?  Swift中swift中的switch 语句  网站按钮制作软件,如何实现网页中按钮的自动点击?  如何选择美橙互联多站合一建站方案?  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  实现虚拟支付需哪些建站技术支撑?  黑客入侵网站服务器的常见手法有哪些?  招贴海报怎么做,什么是海报招贴?  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  网站制作公司排行榜,抖音怎样做个人官方网站  详解jQuery停止动画——stop()方法的使用  如何通过服务器快速搭建网站?完整步骤解析  微信推文制作网站有哪些,怎么做微信推文,急?  公司网站的制作公司,企业网站制作基本流程有哪些?  家庭服务器如何搭建个人网站?  高端企业智能建站程序:SEO优化与响应式模板定制开发  建站之星如何优化SEO以实现高效排名?  宁波自助建站系统如何快速打造专业企业网站?  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?  如何快速生成凡客建站的专业级图册?  寿县云建站:智能SEO优化与多行业模板快速上线指南  Android使用GridView实现日历的简单功能  制作网站公司那家好,网络公司是做什么的?  C++中引用和指针有什么区别?(代码说明)  如何零成本快速生成个人自助网站?  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  建站之星下载版如何获取与安装?  建站之星安装后如何自定义网站颜色与字体? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。