一、场景
invalid scene rid: f05f96ab-5382f139-14b13d2f
二、分析

1、百度翻译

无效的场景ridscene格式错误

2、执行以下代码

package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"log"
)

func main() {
	data := map[string]interface{}{
		"scence": "user_id=1&order_id=3",
	}
	transferMean(data)
	//notTransferMean(data)
}

//转义
func transferMean(body map[string]interface{}) {
	var bodyJson []byte
	if body != nil {
		var err error
		bodyJson, err = json.Marshal(body)
		if err != nil {
			log.Print(err)
		}
	}
	fmt.Println(bytes.NewBuffer(bodyJson))
}

//不转义
func notTransferMean(body map[string]interface{}) {
	buffer := bytes.NewBuffer([]byte{})
	if body != nil {
		jsonEncoder := json.NewEncoder(buffer)
		jsonEncoder.SetEscapeHTML(false)
		err := jsonEncoder.Encode(body)
		if err != nil {
			log.Print(err)
		}
	}
	fmt.Println(buffer)
}

3、打印

{"scence":"user_id=1\u0026order_id=3"}

Process finished with exit code 0

4、分析

&\u0026scene最大32个可见字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~,其它字符请自行编码为合法字符(因不支持%,中文无法使用 urlencode 处理,请使用其他编码方式)\scenejson.Marshal()方法 特殊字符转义//notTransferMean(data)
{"scence":"user_id=1\u0026order_id=3"}
{"scence":"user_id=1&order_id=3"}


Process finished with exit code 0
三、封装post方法