在服务端使用微信小程序的内容安全检查等接口时,尽管按文档 https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/sec-check/security.msgSecCheck.html 的要求传了参数,但是还是会出错,而用 postman 等工具却正常,以下分享调试经验。
1. 正确调用方式
在服务端发起调用时,网址为:
https://api.weixin.qq.com/wxa/msg_sec_check?access_token={你的token}
设置请求头为:
- Method: POST
- Content-Type: application/json
- Body: content 的 json 格式字符串
其中注意点有:
- access_token 需要放在url 的请求参数位置
- 请求头多了其他配置,例如 gzip: true,都有可能产生错误
- 需要设置 Content-Type 为 json 格式,否则自己手动将对象 { content: “检查词” } 转成合法的 json 格式
下面用 egg.js 框架的调用方式举例一下,其他框架也大同小异:
const url = 'https://api.weixin.qq.com/wxa/msg_sec_check?access_token={你的token}';
const res = await this.ctx.curl(url, {
method: 'POST',
contentType: 'json',
data: { content: "检查词" },
dataType: 'json', // 例如可以设置响应格式为json
// 其他无影响的请求头参数可以酌情增加,但例如 gzip 加入就会报错
})
2. 一些常见报错原因
- 请求头设置出错,多了不必要的配置(这里是设置了 gzip 后报错)
Error: incorrect header check, POST https://api.weixin.qq.com/wxa/msg_sec_check?access_token=*** 200 (connected: true, keepalive socket: true, socketHandledRequests: 1, socketHandledResponses: 1)
headers: {"connection":"close","content-encoding":"deflate","content-type":"application/json; charset=UTF-8","content-length":"26"}
- content 传递时没有指定 ContentType 为 application/json,导致传递传参错误
data format error hint: [odGiRa03874870]
本文介绍了微信小程序msg_sec_check接口正确调用的方法,包括设置URL请求参数、请求头及Content-Type,并强调access_token的位置和避免额外配置。同时,提到了因请求头设置错误(如gzip)和Content-Type不正确导致的常见报错问题。
167

被折叠的 条评论
为什么被折叠?



