Go Web编程实战(9)----创建客户端

简介: Go Web编程实战(9)----创建客户端

创建一个客户端


Go语言的net/http包中,还提供了一个被称为Client的结构体。该结构体提供了Get()、Post()两个请求函数。下面,我们来分别使用代码实现这些请求。


Get()请求

首先,我们来看一下Get()请求函数的定义,以及其内部的调用逻辑:

func Get(url string) (resp *Response, err error) {
  return DefaultClient.Get(url)
}
func (c *Client) Get(url string) (resp *Response, err error) {
  req, err := NewRequest("GET", url, nil)
  if err != nil {
  return nil, err
  }
  return c.Do(req)
}


可以发现,其真实调用的函数其实是NewRequest(),其实Post请求也是一样,之需要将NewRequest()函数的第一个参数改为“POST”即可。


下面,我们来实现Get()请求:

package main
import (
  "fmt"
  "io/ioutil"
  "net/http"
)
func main() {
  resp, err := http.Get("https://blog.csdn.net/liyuanjinglyj")
  if err != nil {
  fmt.Println(err)
  }
  closer := resp.Body
  bytes, err := ioutil.ReadAll(closer)
  fmt.Println(string(bytes))
}


运行之后,控制台会打印我的CSDN主页的HTML文档内容。


Post()请求

Post()请求稍微比Get()请求复杂点,这里我们直接上代码:

package main
import (
  bytes2 "bytes"
  "fmt"
  "io/ioutil"
  "net/http"
)
func main() {
  url := "http://httpbin.org/post"
  body := "{\"name\",\"liyuanjing\",\"age\",29}"
  response, err := http.Post(url, "application/x-www-form-urlencoded", bytes2.NewBuffer([]byte(body)))
  if err != nil {
  fmt.Println(err)
  }
  bytes, err := ioutil.ReadAll(response.Body)
  fmt.Println(string(bytes))
}


运行之后,控制台会返回你传递的参数内容,这里就不展示了。


当然,还有PUT与DELETE请求。不过,在实际的应用中比较少,这里直接忽略。


请求头设置

在我们进行各种爬虫以及获取网页各种数据时,为了伪装自己是浏览器,常常需要设置各种类型的请求头。而Go语言给我们提供Header类型。


下面,我们来定义一个User-Agent请求头,因为我们是自己设置的Header,所以需要直接使用NewRequest()方法。

package main
import (
  "fmt"
  "io/ioutil"
  "net/http"
)
func main() {
  client := &http.Client{}
  request, err := http.NewRequest("Get", "https://www.baidu.com/", nil)
  request.Header.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36")
  if err != nil {
  fmt.Println(err)
  }
  resp, _ := client.Do(request)
  closer := resp.Body
  bytes, err := ioutil.ReadAll(closer)
  fmt.Println(string(bytes))
  defer resp.Body.Close()
}
相关文章
|
6天前
|
监控 Linux PHP
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
54 20
|
11天前
|
监控 关系型数据库 MySQL
【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
22 0
|
3月前
|
中间件 Go API
Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架
本文概述了Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架。
228 1
|
3月前
|
数据库连接 Go 数据库
Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性
本文探讨了Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性;防御编程则强调在编码时考虑各种错误情况,确保程序健壮性。文章详细介绍了这两种技术在Go语言中的实现方法及其重要性,旨在提升软件质量和可靠性。
57 1
|
3月前
|
数据采集 监控 Java
go语言编程学习
【11月更文挑战第3天】
57 7
|
3月前
|
缓存 前端开发 中间件
go语言中Web框架
【10月更文挑战第22天】
58 4
|
3月前
|
Unix Linux Go
go进阶编程:Golang中的文件与文件夹操作指南
本文详细介绍了Golang中文件与文件夹的基本操作,包括读取、写入、创建、删除和遍历等。通过示例代码展示了如何使用`os`和`io/ioutil`包进行文件操作,并强调了错误处理、权限控制和路径问题的重要性。适合初学者和有经验的开发者参考。
|
4月前
|
Java 大数据 Go
Go语言:高效并发的编程新星
【10月更文挑战第21】Go语言:高效并发的编程新星
77 7
|
4月前
|
Go 数据处理 调度
Go语言中的并发模型:解锁高效并行编程的秘诀
本文将探讨Go语言中独特的并发模型及其在现代软件开发中的应用。通过深入分析 Goroutines 和 Channels,我们将揭示这一模型如何简化并行编程,提升应用性能,并改变开发者处理并发任务的方式。不同于传统多线程编程,Go的并发方法以其简洁性和高效性脱颖而出,为开发者提供了一种全新的编程范式。
|
5月前
|
存储 缓存 Go
go语言编程系列(五)
go语言编程系列(五)

热门文章

最新文章

  • 1
    打造高效的Web Scraper:Python与Selenium的完美结合
    13
  • 2
    Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
    26
  • 3
    AppSpider Pro 7.5.015 for Windows - Web 应用程序安全测试
    20
  • 4
    【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
    54
  • 5
    部署使用 CHAT-NEXT-WEB 基于 Deepseek
    342
  • 6
    【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
    26
  • 7
    java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
    40
  • 8
    零基础构建开源项目OpenIM桌面应用和pc web- Electron篇
    28
  • 9
    【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
    22
  • 10
    FastAPI与Selenium:打造高效的Web数据抓取服务 —— 采集Pixabay中的图片及相关信息
    55