go语言的http post推送

简介: go语言的http post推送

go语言的网络功能比较强大,使用go语言实现http 协议的推送非常简单,这里做了个简单的post推送示例。


代码

package main
 
import (
    "bytes"
    "fmt"
    "io/ioutil"
  "crypto/tls"
    "net/http"
   "flag"  
)
 
type Data struct {
    Name string `json:"name"`
}
 
func main() {
    // JSON数据
    var payloadBytes string;
  
  var  url string
  
    flag.StringVar(&payloadBytes, "c", "", "内容")
    flag.StringVar(&url, "d", "", "url")
  flag.Parse()
  
  

  //fmt.Println(payloadBytes)
  
  bytestr := []byte(payloadBytes)
  
  //在认证的时候,忽略证书校验,
  tr := &http.Transport{
        TLSClientConfig:    &tls.Config{InsecureSkipVerify: true},
    }
  
    // HTTP POST请求
    req, err := http.NewRequest("POST", url, bytes.NewBuffer(bytestr))
    if err != nil {
        panic(err)
    }
 
    // 设置Content-Type头部信息
    req.Header.Set("Content-Type", "application/json")
 
    // 创建客户端并发送请求
    client := &http.Client{Transport: tr}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()
 
    // 获取响应结果
    body, _ := ioutil.ReadAll(resp.Body)
    responseString := string(body)
 
    // 输出响应结果
    fmt.Println(responseString)
}


测试运行:

go run main.go -d http://192.168.1.168/cgi-bin/file/post -c "{\"test\": 1}"
{"code": "200"}  --收到的应答消息

//服务端接收的信息:
method: POST
data: {"test": 1}


总结


以上代码里,使用flag来获取命令行传递的入参。


在认证的时候,忽略服务端证书校验,

  tr := &http.Transport{
        TLSClientConfig:    &tls.Config{InsecureSkipVerify: true},
    }  


这里如果不忽略,可能会报如下错误:

x509: certificate signed by unknown authority
目录
相关文章
|
2月前
|
存储 安全 Java
【Golang】(4)Go里面的指针如何?函数与方法怎么不一样?带你了解Go不同于其他高级语言的语法
结构体可以存储一组不同类型的数据,是一种符合类型。Go抛弃了类与继承,同时也抛弃了构造方法,刻意弱化了面向对象的功能,Go并非是一个传统OOP的语言,但是Go依旧有着OOP的影子,通过结构体和方法也可以模拟出一个类。
233 1
|
4月前
HTTP协议中请求方式GET 与 POST 什么区别 ?
GET和POST的主要区别在于参数传递方式、安全性和应用场景。GET通过URL传递参数,长度受限且安全性较低,适合获取数据;而POST通过请求体传递参数,安全性更高,适合提交数据。
581 2
|
4月前
|
Cloud Native 安全 Java
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
317 1
|
4月前
|
Cloud Native Go API
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
412 0
|
4月前
|
Cloud Native Java Go
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
274 0
|
4月前
|
Cloud Native Java 中间件
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
252 0
|
4月前
|
Cloud Native Java Go
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
349 0
|
4月前
|
数据采集 Go API
Go语言实战案例:多协程并发下载网页内容
本文是《Go语言100个实战案例 · 网络与并发篇》第6篇,讲解如何使用 Goroutine 和 Channel 实现多协程并发抓取网页内容,提升网络请求效率。通过实战掌握高并发编程技巧,构建爬虫、内容聚合器等工具,涵盖 WaitGroup、超时控制、错误处理等核心知识点。
|
4月前
|
数据采集 JSON Go
Go语言实战案例:实现HTTP客户端请求并解析响应
本文是 Go 网络与并发实战系列的第 2 篇,详细介绍如何使用 Go 构建 HTTP 客户端,涵盖请求发送、响应解析、错误处理、Header 与 Body 提取等流程,并通过实战代码演示如何并发请求多个 URL,适合希望掌握 Go 网络编程基础的开发者。
|
5月前
|
JSON 前端开发 Go
Go语言实战:创建一个简单的 HTTP 服务器
本篇是《Go语言101实战》系列之一,讲解如何使用Go构建基础HTTP服务器。涵盖Go语言并发优势、HTTP服务搭建、路由处理、日志记录及测试方法,助你掌握高性能Web服务开发核心技能。