GO发送JSON参数的POST请求

package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net/http"
)

//常量
const METHOD = "POST"
const CONTENT_TYPE = "application/json"
const APP_KEY = "test_report-portal"

func main() {

	//定义相关参数
	url := "http://localhost:6021/appBi2Board/diagnosis"
	token := "Bearer eyJhbGciOiJIUzI1NiJ9"

	//构建请求参数za
	config := map[string]interface{}{}
	config["groupId"] = 1020
	config["yearMonth"] = "2021-03"

	fmt.Println(config)

	//JSON序列化
	configData, _ := json.Marshal(config)
	param := bytes.NewBuffer([]byte(configData))

	//构建http请求
	client := &http.Client {

	}
	req, err := http.NewRequest(METHOD, url, param)

	if err != nil {
		fmt.Println(err)
		return
	}
	//header
	req.Header.Add("Content-Type", CONTENT_TYPE)
	req.Header.Add("appKey", APP_KEY)
	req.Header.Add("Authorization", token)

	//发送请求
	res, err := client.Do(req)
	if err != nil {
		fmt.Println(err)
		return
	}
	defer res.Body.Close()

	//返回结果
	body, err := ioutil.ReadAll(res.Body)
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(string(body))
}
Go语言中,你可以使用标准库中的`net/http`包来发送HTTP请求。如果你想发送一个带有自定义Header和JSON格式请求体的POST请求,你可以按照以下步骤进行: 1. 创建一个`http.Request`对象。 2. 设置自定义Header。 3. 编写JSON格式的请求体数据。 4. 发送请求,并检查响应。 下面是一个简单的示例代码,展示了如何完成这些步骤: ```go package main import ( "encoding/json" "fmt" "io/ioutil" "log" "net/http" ) // 假设你需要发送的数据结构如下 type MyData struct { Name string `json:"name"` Email string `json:"email"` } func main() { // 创建MyData实例并赋值 data := MyData{Name: "张三", Email: "zhangsan@example.com"} // 将结构体数据编码为JSON格式的字节切片 jsonData, err := json.Marshal(data) if err != nil { log.Fatal(err) } // 创建一个新的请求 req, err := http.NewRequest("POST", "http://example.com/api/resource", nil) if err != nil { log.Fatal(err) } // 设置请求头信息 req.Header.Add("Content-Type", "application/json") req.Header.Add("Authorization", "Bearer your_token_here") // 将JSON数据作为请求体 req.Body = ioutil.NopCloser(bytes.NewBuffer(jsonData)) // 发送请求 client := &http.Client{} resp, err := client.Do(req) if err != nil { log.Fatal(err) } defer resp.Body.Close() // 读取响应体 body, err := ioutil.ReadAll(resp.Body) if err != nil { log.Fatal(err) } // 打印响应状态和响应体 fmt.Printf("Response Status: %s\n", resp.Status) fmt.Printf("Response Body: %s\n", body) } ``` 在这个示例中,首先定义了一个`MyData`结构体来表示你要发送的数据,然后使用`json.Marshal`方法将其编码为JSON格式的字节切片。接着创建了一个新的`http.Request`对象,并设置了请求方法、URL以及请求体。然后设置了请求头,包括内容类型为JSON以及一个假设的认证令牌。使用`http.Client`发送请求,并处理响应。 请确保将`http://example.com/api/resource`替换为你想要发送POST请求的URL,同时替换`your_token_here`为你的实际认证令牌。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值