目录

1.http.Post

2.http.NewRequest

3.gorequest


通过go语言实现http请求

1.http.Post

import ("net/http""net/url"
)data := url.Values{"start":{"100"}, "hobby":{"xxxx"}}
body := strings.NewReader(data.Encode())
resp, err := http.Post("127.0.0.1:9338", "application/x-www-form-urlencoded", body)

net/http包没有封装直接使用请求带header的get或者post方法,所以,要想请求中带header,只能使用NewRequest方法

2.http.NewRequest

客户端:

import ("net/http""json""ioutil"
)
type Student struct{id stringname string
}type StudentReq struct{id stringname string
}
func main() {data:= Student{id:"2ed4tg5fe35fgty3yy6uh",name:"amber",}stu,err := json.Marshal(&data)reader := bytes.NewReader(stu)request,err := http.NewRequest("POST", "http://192.168.1.12:8000/create", reader)request.Header.Set("Content-Type", "application/json")client:=&http.Client{}response,err := client.Do(request)defer response.Body.Close()body,err := ioutil.ReadAll(response.Body)fmt.Printf(string(body))var stuReq StudentReq err = json.UnMarshal(body, &stuReq)fmt.Println(json.MarshalIndent(stuReq))
}

解析:

  1. stu,err := json.Marshal(&data):将data对象改为json格式
  2. reader := bytes.NewReader(stu):所以将json改为byte格式,作为body传给http请求
  3. request,err := http.NewRequest(“POST”, “http://192.168.1.12:8000/create”, reader):创建url
  4. response,err := client.Do(request):客户端发起请求,接收返回值
  5. body,err := ioutil.ReadAll(response.Body):读取body的值,类型是byte
  6. json.MarshalIndent(stuReq):修改json为标准格式

注意(坑):
1、header里的参数是Content-Type,不要写成ContentType
2、【go http: read on closed response body 】如果发送的请求是分为2个func写的,记住defer要在ioutil.ReadAll之后执行,否则报错

3.gorequest

这种方式适合在url里拼接参数使用param直接传递

"github.com/parnurzeal/gorequest"func main() {resp, body, errs := gorequest.New().Post("http://127.0.0.1/create").Param("ip", "192.168.1.4").EndBytes()if errs != nil || resp.StatusCode >= 300 {log.Errorf("fail to call api with errors %v, %+v", errs, body)}var stuReq StudentReq err = json.UnMarshal(body, &stuReq)fmt.Println(json.MarshalIndent(stuReq))
}

golang NewRequest gorequest 实现http请求相关推荐

  1. golang接收 post和get请求参数处理

    golang接收 post和get请求 1.golang中获取请求接口中数据(GET) 方式一: API参数 ctx.Param(name string)或者ctx.Params.ByName(nam ...

  2. golang使用http发送graphql请求

    请求内容: query格式: query UnitList($Ids: String!, $offset: Int! ){UnitList(searchParams: {Ids: $Ids, offs ...

  3. golang post get put delete 请求实例代码

    实例如下: package mainimport ("fmt""io/ioutil""net/http""strings" ...

  4. golang爬虫colly 发送post请求

    继续还是工作中使用colly,不管是官网,还是网上的一些文章(其实90%就是把官网的案例抄过去),都是一样的格式,没有讲到post,测试了几次,记录一下post的使用 c := colly.NewCo ...

  5. Golang gin框架:GET请求示例

    package mainimport ("net/http""github.com/gin-gonic/gin" )func main() {r := gin. ...

  6. golang每隔10秒访问URL

    package main import ( "fmt" "io/ioutil" "net/http" "time" ) ...

  7. golang长连接和短连接的那些事儿

    文章目录 一.TCP长连接和短连接区别 1.1 长连接.短连接概念 1.2 长连接.短连接的传输过程区别 1.3 长连接与短连接的优缺点 二.TCP长连接和短连接应用场景 2.1 长连接应用场景 2. ...

  8. Volley 源码解析之图片请求

    一.前言 上篇文章我们分析了网络请求,这篇文章分析对图片的处理操作,如果没看上一篇,可以先看上一篇文章Volley 源码解析之网络请求.Volley 不仅仅对请求网络数据作了良好的封装,还封装了对图片 ...

  9. 开启云原生 MOSN 新篇章 — 融合 Envoy 和 Golang 生态

    注:本文是王发康(毅松)在 2021 GopherChina 上演讲的文字稿,相关分享 PPT 可自行到 MOSN meetup 下载. MOSN meetup 地址: https://github. ...

最新文章

  1. 机器视觉与机器学习牛人博客
  2. iOS 仿看了吗应用、指南针测网速等常用工具、自定义弹出视图框架、图片裁剪、内容扩展等源码...
  3. 五年级计算机学情分析,2015—2016学年小学五年级信息技术上册教学计划
  4. acdream 1222 Quantization Problem [dp]
  5. centos查看mysql信息_CentOS查看和修改MySQL字符集
  6. java B2B2C springmvc mybatis仿淘宝电子商城系统(十)用spring Restdocs创建API文档
  7. 数据库单表千万行 LIKE 搜索优化手记
  8. python中字符串相乘结果_LeetCode 43. 字符串相乘 | Python
  9. UIPickView 和 UIDatePicker
  10. java会跳出problem_docs/java/concurrent/ConcurrencyProblem.md · wt1814/wt-note - Gitee.com
  11. python全栈开发-Day11 迭代器、生成器、面向过程编程
  12. wdatepicker 设置只显示时分_液晶显示多功能电力仪表EX8-33
  13. 父元素没有高度,子元素高度失效
  14. Node.js 11.14.0 发布,服务器端的 JavaScript 运行环境
  15. 【图像配准】基于matlab GUI SIFT图像配准拼接【含Matlab源码 854期】
  16. 信息熵、相对熵与交叉熵
  17. 微信小程序影视评论交流平台系统毕业设计毕设(6)开题答辩PPT
  18. gjs/seed相关笔记
  19. 树莓派云盘内网穿透及扩容
  20. [置顶] wifi漫游测试过程

热门文章

  1. 2009年9月全国计算机等级考试四级网络工程师试卷_选择题
  2. java 鼠标 停止工作原理,java系统级的键盘和鼠标状态
  3. 用 Flask 来写个轻博客 (13) — M(V)C_WTForms 服务端表单检验
  4. notepad宏的使用,定制各种操作,比如删除一整行、从当前位置到行末用某字符替换
  5. 让Keil生成汇编文件、bin文件
  6. 基于ftp服务的三种登录方式及其相关的访问控制和优化
  7. com关于IUnknown接口
  8. 小米6发布,雷军亲手终结小米低价时代,低价竞争还能走多远?
  9. hdu4847 Wow! Such Doge! KMP
  10. HTTPS 接入优化建议