当前位置: 首页 > news >正文

golang 发送GET和POST示例

GET请求

get请求可以直接使用 http.Get方法
简单
func main(){
resp, err := http.Get("https://baidu.com")
    if err != nil {
        panic(err)
    
    }
    defer resp.Body.Close()
    s,err:=ioutil.ReadAll(resp.Body)
    fmt.Printf(string(s))
}
复杂
func main() {

    params := url.Values{}

    Url, err := url.Parse("http://baidu.com?fd=fdsf")
    if err != nil {
        panic(err.Error())

    }
    params.Set("a", "fdfds")
    params.Set("id", string("1"))
    //如果参数中有中文参数,这个方法会进行URLEncode
    Url.RawQuery = params.Encode()
    urlPath := Url.String()
    resp, err := http.Get(urlPath)
    defer resp.Body.Close()
    s, err := ioutil.ReadAll(resp.Body)
    fmt.Println(string(s))

}

这个params.set是不是感觉跟php里的http_build_query,自己感觉哈

POST 请求

使用 http.post
type Server struct {
    ServerName string
    ServerIp   string
}

type ServerSlice struct {
    Server    []Server
    ServersID string
}

func main() {
    //post 第三个参数是io.reader interface
    //strings.NewReader  byte.NewReader bytes.NewBuffer  实现了read 方法
    s := ServerSlice{ServersID: "tearm", Server: []Server{{"beijing", "127.0.0.1"}, {"shanghai", "127.0.0.1"}}}
    b, _ := json.Marshal(s)
         fmt.Println(string(b))
    resp, _ := http.Post("http://baidu.com", "application/x-www-form-urlencoded", strings.NewReader("heel="+string(b)))
    //
    defer resp.Body.Close()
    //io.Reader

    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(body))
使用 http.PostForm
func httpPostForm() {
// params:=url.Values{}
// params.Set("hello","fdsfs")  //这两种都可以
   params= url.Values{"key": {"Value"}, "id": {"123"}}
     resp, _:= http.PostForm("http://baidu.com",
       body)
 
    defer resp.Body.Close()
    body, _:= ioutil.ReadAll(resp.Body)
    
    fmt.Println(string(body))
 
}

如果需要设置头参数,cookie之类的数据,就可以使用http.Do

func httpDo() {
    client := &http.Client{}
    
    req, err := http.NewRequest("POST", "baidu.com", strings.NewReader("name=cjb"))
    if err != nil {
        // handle error
    }
 
    req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
    req.Header.Set("Cookie", "name=anny")
 
    resp, err := client.Do(req)
 
    defer resp.Body.Close()
 
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        // handle error
    }
 
    fmt.Println(string(body))
}

同样的http.NewRequest第三个参数只需要实现io.reader接口就行

相关文章:

  • 监听器
  • 用Hexo搭建属于自己的Blog
  • ipcs命令详解
  • 多态
  • 个人站点的日期查询
  • 2017-2018年度Scrum现状报告发布
  • 我们的春节--2019
  • BZOJ 1412 狼和羊的故事
  • LeetCode29.两数相除 JavaScript
  • vim命令模式下光标移动+查找
  • Fastjson的基本使用方法大全
  • 面孔相册按脸给照片分类 这是靠小米人脸检测技术实现的
  • 数据结构java版之冒泡排序及优化
  • 洛谷1474货币系统——小心重复的完全背包
  • 博弈论入门之斐波那契博弈
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • Elasticsearch 参考指南(升级前重新索引)
  • spring boot下thymeleaf全局静态变量配置
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • webgl (原生)基础入门指南【一】
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 服务器之间,相同帐号,实现免密钥登录
  • 将回调地狱按在地上摩擦的Promise
  • 近期前端发展计划
  • 聊聊redis的数据结构的应用
  • 数据科学 第 3 章 11 字符串处理
  • 微服务框架lagom
  • 微信小程序:实现悬浮返回和分享按钮
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • 如何用纯 CSS 创作一个货车 loader
  • 通过调用文摘列表API获取文摘
  • ###C语言程序设计-----C语言学习(6)#
  • #if 1...#endif
  • ( 10 )MySQL中的外键
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (39)STM32——FLASH闪存
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (办公)springboot配置aop处理请求.
  • (二)Linux——Linux常用指令
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (十六)Flask之蓝图
  • (十六)串口UART
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • ******之网络***——物理***
  • *1 计算机基础和操作系统基础及几大协议
  • . Flume面试题
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .L0CK3D来袭:如何保护您的数据免受致命攻击