nodejs调用微信接口返回47001错误

2024-03-01 12:58

本文主要是介绍nodejs调用微信接口返回47001错误,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在公司开发的时候,做了一个评论区,在评论区中需要对用户发表的评论内容做一定的过滤。经商量决定还是使用微信的msgSecCheck接口来过滤吧。

在进行接口调用的时候,我自己使用接口测试工具的时候,是可以正常获取结果的。但是在使用http.request进行接口数据传输的时候,一直返回的就是47001错误。在网上评论大概有以下几种原因。

  • 传送的json错误。在json的错误这里。错误有两个:
      一个是json字符串中不能包含单引号:这个方式,我试了下,并没有什么用。而使用接口测试工具的时候,把json字符串中的双引号改成单引号的时候,反而报错。所以这种方式,pass。
      还一个就是json字符串中不能包含换行符。可是我的这个字符串,根本就没有换行符。所以pass。
      最后一个就是我的json字符串,不规范。可是我都将我传输的json字符串,使用json校验工具检查了,并没有问题,所以这种可能依旧pass。
  • json中字符编码的问题。话说也很奇怪。我在校验字母和英文的时候,是没有问题的,但是在校验中文的时候,就会报错。本来以为是编码的问题,在进行测试的时候,并没有发现是乱码等问题。所以pass。
  • http.request中header设置问题。在一开始的时候,我就觉得应该是这个问题,可是网上的百度资料,除了copy的还是copy的重复的。在微信开发者中心进行搜索的时候,微信官网发现header和我本地并没有问题啊。无奈只是纠结。
      经过了上述的测试和分析,问题已经出来了,就是http.request中的header设置问题。无奈我只能求救老大。老大,过来把我的header一改,整个校验就跑起来了,果然,经验真不是能吹出来的。至于这个问题,我需要再查看下http的具体详解。至于为什么,等我忙完这件事,再出一个详细的教程。不说废话了,上代码再说问题。
return getTokenByDB(wxGameClient).then(config =>{if(!config) throw new Error('get token by db failed!')return new Promise((resolve, reject) => {let pushContent =  JSON.stringify({"content":paramsStr });let options = {hostname: 'api.weixin.qq.com',port : 443,path: '/wxa/msg_sec_check',method: 'POST',headers:{'Content-Type': 'text/html; charset=utf-8',//'Content-Type': 'application/json; charset=utf-8','Content-Length': Buffer.byteLength(pushContent)//'Content-Length': pushContent.length}};options.path = options.path + '?' + querystring.stringify({access_token:config[0].data.access_token});let req = https.request(options, (res) => {let data = '';res.on('data', (d) => {data += d;});res.on("end", function () {try{data = JSON.parse(data);}catch(e){return reject({code : 50000, errmsg : e, message : data});}if(data.errcode === 87014) return reject('有敏感信息!');else if(data.errcode === 0)  return resolve(data);else reject({code : 50000,message : data})});});req.write(pushContent);//写入传递的数据req.on('error', e => {let err = new Error(e)err.code = 500reject(err)});req.end();})})

再上面的代码中,再header配置中,注释掉的是我原来的设置,新改的设置,是成功的,其实对比一下,就是这么点问题。浪费了我一上午的时间。看来是时候,好好弄弄http请求详解了。

这篇关于nodejs调用微信接口返回47001错误的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/762522

相关文章

Springboot3统一返回类设计全过程(从问题到实现)

《Springboot3统一返回类设计全过程(从问题到实现)》文章介绍了如何在SpringBoot3中设计一个统一返回类,以实现前后端接口返回格式的一致性,该类包含状态码、描述信息、业务数据和时间戳,... 目录Spring Boot 3 统一返回类设计:从问题到实现一、核心需求:统一返回类要解决什么问题?

SpringBoot返回文件让前端下载的几种方式

《SpringBoot返回文件让前端下载的几种方式》文章介绍了开发中文件下载的两种常见解决方案,并详细描述了通过后端进行下载的原理和步骤,包括一次性读取到内存和分块写入响应输出流两种方法,此外,还提供... 目录01 背景02 一次性读取到内存,通过响应输出流输出到前端02 将文件流通过循环写入到响应输出流

SpringBoot项目整合Netty启动失败的常见错误总结

《SpringBoot项目整合Netty启动失败的常见错误总结》本文总结了SpringBoot集成Netty时常见的8类问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、端口冲突问题1. Tomcat与Netty端口冲突二、主线程被阻塞问题1. Netty启动阻

C# WebAPI的几种返回类型方式

《C#WebAPI的几种返回类型方式》本文主要介绍了C#WebAPI的几种返回类型方式,包括直接返回指定类型、返回IActionResult实例和返回ActionResult,文中通过示例代码介绍的... 目录创建 Controller 和 Model 类在 Action 中返回 指定类型在 Action

SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)

《SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)》本文总结了SpringBoot项目整合Kafka启动失败的常见错误,包括Kafka服务器连接问题、序列化配置错误、依赖配置问题、... 目录一、Kafka服务器连接问题1. Kafka服务器无法连接2. 开发环境与生产环境网络不通二、序

requests处理token鉴权接口和jsonpath使用方式

《requests处理token鉴权接口和jsonpath使用方式》文章介绍了如何使用requests库进行token鉴权接口的处理,包括登录提取token并保存,还详述了如何使用jsonpath表达... 目录requests处理token鉴权接口和jsonpath使用json数据提取工具总结reques

在C#中调用Windows防火墙界面的常见方式

《在C#中调用Windows防火墙界面的常见方式》在C#中调用Windows防火墙界面(基础设置或高级安全设置),可以使用进程启动(Process.Start)或Win32API来实现,所以本文给大家... 目录引言1. 直接启动防火墙界面(1) 打开基本防火墙设置(firewall.cpl)(2) 打开高

解决java.util.RandomAccessSubList cannot be cast to java.util.ArrayList错误的问题

《解决java.util.RandomAccessSubListcannotbecasttojava.util.ArrayList错误的问题》当你尝试将RandomAccessSubList... 目录Java.util.RandomAccessSubList cannot be cast to java.

python调用dubbo接口的实现步骤

《python调用dubbo接口的实现步骤》本文主要介绍了python调用dubbo接口的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编... 目录 ​​其他实现方式与注意事项​​ ​​高级技巧与集成​​用 python 提供 Dubbo 接口

Java编译错误java.lang.NoSuchFieldError的解决方案详析

《Java编译错误java.lang.NoSuchFieldError的解决方案详析》java.lang.NoSuchFieldError是Java中的一种运行时错误,:本文主要介绍Java编译错... 目录前言解决方案1. 统一JDK版本环境2. 优化maven-compiler-plugin配置3. 清