首页 > node.js开发微信公众账号设备功能问题,求解答!!

node.js开发微信公众账号设备功能问题,求解答!!

开发微信公众号里面的设备功能项,添加硬件设备获取到二维码,扫描后会出现绑定事件,点击绑定时,微信公众平台会向服务器发送post请求并且发送一条json数据,但为什么我创建的服务器不能接受到这条json数据呢?下面是我服务器的代码:

var express = require('express');
var crypto = require('crypto');
var xml = require('node-xml');
var querystring = require('querystring');
var xml2js = require('xml2js');
var router = express.Router();
//var parseString=require('xml2js').parseString;
var token = "token"; //此处需要你自己修改!

var parser = new xml2js.Parser();
var http = require('http');
var qs = require('querystring');
/* GET home page. */
router.get('/', function(req, res, next) {

    var signature = req.query.signature;
    console.log(signature);
    var timestamp = req.query.timestamp;
    var nonce = req.query.nonce;
    var echostr = req.query.echostr;

    /*  加密/校验流程如下: */
    //1. 将token、timestamp、nonce三个参数进行字典序排序
    var array = new Array(token, timestamp, nonce);
    array.sort();
    var str = array.toString().replace(/,/g, "");
    //2. 将三个参数字符串拼接成一个字符串进行sha1加密
    var sha1Code = crypto.createHash("sha1");
    var code = sha1Code.update(str, 'utf-8').digest("hex");
    //3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
    if (code === signature) {
        res.send(echostr)

    } else {
        res.send("error");

    }
});
router.post('/', function(req, res) {
    //  console.log('req is :' + req.toString());
    var post_data = "";
    req.on("data", function(data) {
        console.log('JSON post_data is :' + data.toString());
        // parseString(data,function (err,result) {
        //   console.log(JSON.stringify(result));
        // });
        post_data = data;
        parser.parseString(data, function(err, result) {
            //将对象转换成字符串输出
            console.log('JSON数据为:' + JSON.stringify(result));
            console.log('fdfsfgdgfgrtg');
 });
 });
    res.send('thanks you for you message');

    req.on("end", function() {
        /// console.log('JSON post_data is :' + JSON.parse(post_data));
        var xmlStr = post_data.toString('utf-8', 0, post_data.length);
        console.log("接受道德消息未" + xmlStr);
    });

  });
//  

module.exports = router;
跪求解答,真的是要把我憋疯了!!

post的不是xml数据吗?


post_data需要链接起来的
在req.on里面post_data += data;
这样就有了 然后你解析出来

【热门文章】
【热门文章】