noejs手动post中文Content-Length的问题

在不使用第三方插件的情况下,手动通过Node.js的http模块进行POST请求时,遇到中文Content-Length计算错误的问题。错误源于计算Content-Length时直接使用了字符串长度,而非考虑字符编码后的字节长度。通过对比英文内容的正确Content-Length,确定了需要使用Buffer.byteLength来正确测量中文内容的字节长度,从而解决POST中文数据时的Content-Length设置问题。
摘要由CSDN通过智能技术生成

以前都是使用第三方插件完成get或者post, 其中插件中帮我们完成了很多http或者https的信息配置问题,其中最重要的就是头文件headers,这里使用了nodejs原生的http工具

// 发送客服消息
function csMsg(ct) {
  const jsMsg = JSON.stringify({
    'touser': ct.openid,
    'msgtype': 'text',
    'text': {
      'content': ct.content,
    },
  });

  const options = {
    hostname: 'api.weixin.qq.com',
    port: 443,
    path: `/cgi-bin/message/custom/send?access_token=${ACCESS_TOKEN}`,
    method: 'POST',
    headers: Object.assign({}, headersPre, {
      'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',
      'Content-Length': Buffer.byteLength(jsMsg, 'utf8')
    }),
  };
  const req = https.request(options, res => {
    logger.info('Status: ' + res.statusCode);
    logger.info('Headers: ' + JSON.stringify(res.headers));
    res.setEncoding('utf8&
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值