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

相关文章

springboot下载接口限速功能实现

《springboot下载接口限速功能实现》通过Redis统计并发数动态调整每个用户带宽,核心逻辑为每秒读取并发送限定数据量,防止单用户占用过多资源,确保整体下载均衡且高效,本文给大家介绍spring... 目录 一、整体目标 二、涉及的主要类/方法✅ 三、核心流程图解(简化) 四、关键代码详解1️⃣ 设置

spring中的ImportSelector接口示例详解

《spring中的ImportSelector接口示例详解》Spring的ImportSelector接口用于动态选择配置类,实现条件化和模块化配置,关键方法selectImports根据注解信息返回... 目录一、核心作用二、关键方法三、扩展功能四、使用示例五、工作原理六、应用场景七、自定义实现Impor

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

MybatisPlus service接口功能介绍

《MybatisPlusservice接口功能介绍》:本文主要介绍MybatisPlusservice接口功能介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录Service接口基本用法进阶用法总结:Lambda方法Service接口基本用法MyBATisP

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

统一返回JsonResult踩坑的记录

《统一返回JsonResult踩坑的记录》:本文主要介绍统一返回JsonResult踩坑的记录,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录统一返回jsonResult踩坑定义了一个统一返回类在使用时,JsonResult没有get/set方法时响应总结统一返回

MyBatis设计SQL返回布尔值(Boolean)的常见方法

《MyBatis设计SQL返回布尔值(Boolean)的常见方法》这篇文章主要为大家详细介绍了MyBatis设计SQL返回布尔值(Boolean)的几种常见方法,文中的示例代码讲解详细,感兴趣的小伙伴... 目录方案一:使用COUNT查询存在性(推荐)方案二:条件表达式直接返回布尔方案三:存在性检查(EXI

Java调用C#动态库的三种方法详解

《Java调用C#动态库的三种方法详解》在这个多语言编程的时代,Java和C#就像两位才华横溢的舞者,各自在不同的舞台上展现着独特的魅力,然而,当它们携手合作时,又会碰撞出怎样绚丽的火花呢?今天,我们... 目录方法1:C++/CLI搭建桥梁——Java ↔ C# 的“翻译官”步骤1:创建C#类库(.NET

如何解决Druid线程池Cause:java.sql.SQLRecoverableException:IO错误:Socket read timed out的问题

《如何解决Druid线程池Cause:java.sql.SQLRecoverableException:IO错误:Socketreadtimedout的问题》:本文主要介绍解决Druid线程... 目录异常信息触发场景找到版本发布更新的说明从版本更新信息可以看到该默认逻辑已经去除总结异常信息触发场景复

Python struct.unpack() 用法及常见错误详解

《Pythonstruct.unpack()用法及常见错误详解》struct.unpack()是Python中用于将二进制数据(字节序列)解析为Python数据类型的函数,通常与struct.pa... 目录一、函数语法二、格式字符串详解三、使用示例示例 1:解析整数和浮点数示例 2:解析字符串示例 3:解