100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > golang 微信小程序获取二维码scene参数报错 invalid scene rid: f05f96ab-5382f139-14b13d2f

golang 微信小程序获取二维码scene参数报错 invalid scene rid: f05f96ab-5382f139-14b13d2f

时间:2019-09-05 15:52:42

相关推荐

golang 微信小程序获取二维码scene参数报错  invalid scene rid: f05f96ab-5382f139-14b13d2f

一、场景二、分析1、百度翻译2、执行以下代码3、打印4、分析三、封装post方法

一、场景

调用 微信小程序码生成接口 报错:invalid scene rid: f05f96ab-5382f139-14b13d2f

二、分析

1、百度翻译

百度翻译一下为:无效的场景rid,可能是我们的scene参数的值格式错误

2、执行以下代码

package mainimport ("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 []byteif body != nil {var err errorbodyJson, 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、分析

我们可以看到符号&被转义成了\u0026而我们的scene只支持最大32个可见字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~,其它字符请自行编码为合法字符(因不支持%,中文无法使用 urlencode 处理,请使用其他编码方式)很明显转义后的\并不包含在scene中所以我们要禁止json.Marshal()方法 特殊字符转义打开这行注释//notTransferMean(data),即可得到结果如下:

{"scence":"user_id=1\u0026order_id=3"}{"scence":"user_id=1&order_id=3"}Process finished with exit code 0

三、封装post方法

go对get、post请求封装

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。