企业微信调试发送消息接口只能发送5个中文字符问题

调试了两天的问题总算发现问题所在

情况:通过调用企业微信接口给用户发送消息发送英文正常,但是发送中文就会返回

          "errcode":44004,"errmsg":"empty content  错误的提示,提示说参数当中没有文本,但是json串中肯定是有内容的

一开始以为是编码问题,调试了很久的编码都无法解决,通过编码后的中文到企业微信客户端上就是编码后的内容

然后想到了发送一个中文字试试,居然成功了,然后一个个中文字增加,直到5个中文的时候就又发送不成功了,又返回

      "errcode":44004错误,但是发送英文不管多少都可以成功的,又一次陷入了沉思

 

第二天调试过程中,猛然想到了发送的headers头部有这么一个参数

'Content-Length': postData.length   就想会不会是和这个发送的消息内容长度有关系

通过调试单独打印英文和中文的消息内容长度发现,中文的确实是计算长度有错误

百度找到以下计算方法后,发送的长度正确后就所有中文字符都能发送了

https://blog.csdn.net/xing_____/article/details/46828603

function checkLength(str){
var len = 0;
for (var i=0; i<str.length; i++) {
var c = str.charCodeAt(i);
if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) {
len++;
} else {
len+=3;
}
}
return len;
}

 

posted @ 2018-12-20 17:56  西瓜大  阅读(2280)  评论(0编辑  收藏  举报