Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
Golang如何使用net/http实现HTTP请求_创想鸟

Golang如何使用net/http实现HTTP请求

首先使用net/http包可发送GET、POST请求,如http.Get获取数据;其次通过http.Post提交JSON数据需设置Content-Type;再者用http.NewRequest创建自定义请求头和方法;最后建议设置超时避免阻塞,如&http.Client{Timeout: 10 * time.Second}。

golang如何使用net/http实现http请求

在Go语言中,使用net/http包可以轻松实现HTTP客户端请求和服务器端处理。本文重点介绍如何用net/http发起常见的HTTP请求,包括GET、POST以及自定义请求头和超时设置。

发送GET请求

最简单的HTTP请求是GET请求,用于从服务器获取数据。

使用http.Get()函数可以直接发送GET请求:

resp, err := http.Get("https://www.php.cn/link/4d2fe2e8601f7a8018594d98f28706f2")if err != nil {    log.Fatal(err)}defer resp.Body.Close()

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

说明: http.Get()http.DefaultClient.Get() 的快捷方式。记得调用 resp.Body.Close() 避免资源泄露。

立即学习“go语言免费学习笔记(深入)”;

发送POST请求

发送POST请求通常用于提交数据,比如表单或JSON。

可以使用 http.Post() 发送JSON数据:

jsonStr := `{"name": "Alice", "age": 30}`resp, err := http.Post("https://httpbin.org/post", "application/json", strings.NewReader(jsonStr))if err != nil {    log.Fatal(err)}defer resp.Body.Close()

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

注意: 第二个参数是Content-Type,需根据实际数据类型设置。

九歌 九歌

九歌–人工智能诗歌写作系统

九歌 322 查看详情 九歌

构建自定义请求

对于更复杂的场景,如设置请求头、使用PUT或DELETE方法,可以手动创建http.Request对象。

例如,发送带自定义Header的PUT请求:

req, err := http.NewRequest("PUT", "https://httpbin.org/put", strings.NewReader("data"))if err != nil {    log.Fatal(err)}

req.Header.Set("Authorization", "Bearer token123")req.Header.Set("Content-Type", "text/plain")

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

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

关键点: 使用 http.ClientDo() 方法执行自定义请求,可灵活控制请求细节。

设置超时和连接选项

生产环境中应避免无限等待,建议为HTTP客户端设置超时。

示例:创建一个10秒超时的客户端:

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

resp, err := client.Get("https://www.php.cn/link/4d2fe2e8601f7a8018594d98f28706f2")if err != nil {log.Fatal(err)}defer resp.Body.Close()

你也可以进一步配置Transport来控制连接池、TLS设置等。

基本上就这些。掌握http.Gethttp.Posthttp.NewRequesthttp.Client的使用,就能满足大多数HTTP请求需求。不复杂但容易忽略的是关闭响应体和设置合理超时。

以上就是Golang如何使用net/http实现HTTP请求的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1028798.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
使用JDBC连接MySQL数据库–典型案例分析(七)—-批量插入员工信息
上一篇 2025年12月2日 02:22:00
mysql中如何设置复制参数优化性能
下一篇 2025年12月2日 02:22:03

相关推荐

发表回复

登录后才能评论
关注微信