一、场景
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方法