专栏首页写代码和思考Go 学习笔记1 - 通过http包发送网络请求

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

概述

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

发送 Get,Post,Head

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

resp, err := http.Get("http://example.com/")
...
resp, err := http.PostForm("http://example.com/form",
    url.Values{"key": {"Value"}, "id": {"123"}})
...

上传图片

resp, err := http.Post("h ttp://example.com/upload", "image/jpeg", &buf)

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

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 来实现:

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,示例:

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示例

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()
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Redis 学习笔记8 - 使用 go-redis 访问 redis

    Redis 的 API 非常简单和易于编程。处理使用命令行工具来连接,也可以用你喜欢的语言,本文描述使用 Go 语言 通过 go-redis 库连接。

    zhangyunfeiVir
  • Go 学习笔记3 - 编写一个Web应用程序

    掌握了Go的基础语法后,让我们开始动手实战,尝试写一个 简易的wiki 小应用,它是一个 web 应用项目(网页应用)。

    zhangyunfeiVir
  • Go语言学习之旅 4 - Go 的并发原语

    会启动一个新的 Go 程并执行这个函数。 比如: go say("world") // 将启动一个线程来执行 say 函数

    zhangyunfeiVir
  • go语言基础12-标准库

    吐吐吐吐吐葡萄皮
  • 使用 Python 分析 14 亿条数据

    Google Ngram viewer是一个有趣和有用的工具,它使用谷歌从书本中扫描来的海量的数据宝藏,绘制出单词使用量随时间的变化。举个例子,单词 Pytho...

    小小科
  • VMware虚拟机安装elementary os 教程

    elementary OS 基于 Linux 内核,代码可以被任何人审核,监督,修复,重用。

    Inkedus
  • AI快闻!AI 算法可准确诊断儿童失明病因,准确率达 91%

    上个月,美国FDA批准了世界上第一款糖网筛查AI设备IDx-DR,可以独立检测而不需要医生解释结果。

    CDA数据分析师
  • Android 编译时注解 —— 语法详解

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gdutxiaoxu/article/de...

    用户2965908
  • Centos7安装时遇到的问题及解决方法

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    云雀叫了一整天
  • 杨老师课堂之Excel VBA 程序开发第七讲之自动筛选

    方式1:本节课件下载地址:链接: https://pan.baidu.com/s/1BW1T78d1zpeZq7yFbLOosg 密码: nf97

    杨校

扫码关注云+社区

领取腾讯云代金券