go语言的http post推送

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

代码

go 复制代码
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)
}

测试运行:

bash 复制代码
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来获取命令行传递的入参。

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

go 复制代码
	tr := &http.Transport{
        TLSClientConfig:    &tls.Config{InsecureSkipVerify: true},
    }  

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

bash 复制代码
x509: certificate signed by unknown authority
相关推荐
泡泡鱼(敲代码中)1 小时前
MySQL基础学习笔记:从数据模型到DDL全掌握
开发语言·数据库·笔记·学习·mysql
潜创微科技2 小时前
IT6520:USB-C 转 MIPI 高集成控制器,DP 1.4a 转 MIPI 单芯片搞定 4K120 显示
c语言·开发语言·低延迟·掌机·联阳
Escalating_xu3 小时前
【System V 信号量】从 P/V 原语到 Builder 封装:写出可控、可清理的进程互斥组件
java·linux·开发语言·jvm
傲世仙尊3 小时前
System V 进程间通信详解:共享内存、消息队列与信号量(CSDN博客)
linux·开发语言·c++
cvby3 小时前
C++11
开发语言·c++
ch.ju4 小时前
Java—idea知识:如何创建新项目
java·开发语言·intellij-idea
Evand J4 小时前
【MATLAB例程,图像滤波降噪12】加权中值滑动窗口滤波(WMF)图像降噪,包含滤波质量评价。附代码下载链接
开发语言·图像处理·人工智能·计算机视觉·matlab·滑动窗口·滤波
Tairitsu_H4 小时前
[C++] C++11类和STL的新特性
开发语言·c++·stl·c++11
承渊政道4 小时前
Python IDLE鸿蒙PC适配全记录:从Tkinter桌面程序到ArkUI原生开发闭环
开发语言·python·harmonyos·鸿蒙系统·桌面程序
YMWM_5 小时前
查看realsense相机序列号脚本
开发语言·python·数码相机