前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go 学习笔记1 - 通过http包发送网络请求

Go 学习笔记1 - 通过http包发送网络请求

作者头像
张云飞Vir
发布2020-03-16 16:55:27
8890
发布2020-03-16 16:55:27
举报
文章被收录于专栏:写代码和思考写代码和思考

概述

http 包 提供了 HTTP 客户端实现,和服务端的实现。 通过 http 包,我们可以发送网络请求,get, post 等。

发送 Get,Post,Head

构建 get , 方法,很简单,示例:

代码语言:javascript
复制
resp, err := http.Get("http://example.com/")
...
resp, err := http.PostForm("http://example.com/form",
    url.Values{"key": {"Value"}, "id": {"123"}})
...

上传图片

代码语言:javascript
复制
resp, err := http.Post("h ttp://example.com/upload", "image/jpeg", &buf)

在使用完毕后,记得一定要关闭,像下面这样:

代码语言:javascript
复制
resp, err := http.Get("http://example.com/")
if err != nil {
    // handle error
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
// ...

控制 http客户端 的一些 header, 转发策略等其他设置,我们通过创一个 Client 来实现:

代码语言:javascript
复制
client := &http.Client{
    CheckRedirect: redirectPolicyFunc,
}

resp, err := client.Get("http://example.com")
// ...

req, err := http.NewRequest("GET", "http://example.com", nil)
// ...
req.Header.Add("If-None-Match", `W/"wyzzy"`)
resp, err := client.Do(req)
// ...

控制代理的行为,TLS配置, 长连接,keep-alives,压缩,和其他配置,要创建一个 Transport,示例:

代码语言:javascript
复制
tr := &http.Transport{
    TLSClientConfig:    &tls.Config{RootCAs: pool},
    DisableCompression: true,
}
client := &http.Client{Transport: tr}
resp, err := client.Get("https://example.com")

Clients 和 Transports 是通过 go程 的安全并发实现,高效一点的方法是:创建一个,多次重用它。

一个完整的get示例

代码语言:javascript
复制
package main

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

func demoGet(){
  resp,err := http.Get("http://www.baidu.com")
  defer resp.Body.Close()
  if err != nil {
    fmt.Println("ERROR: ",err);
    return
  }
  fmt.Println(resp);

  body,_ := ioutil.ReadAll(resp.Body)
  fmt.Print(string(body))

}

func main() {
  demoGet()
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 发送 Get,Post,Head
  • 上传图片
  • 控制 http客户端 的一些 header, 转发策略等其他设置,我们通过创一个 Client 来实现:
  • 控制代理的行为,TLS配置, 长连接,keep-alives,压缩,和其他配置,要创建一个 Transport,示例:
  • 一个完整的get示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档