现在的位置: 首页 > 综合 > 正文

client提交json(nodejs)和server解析json并返回json数据(express)

2013年12月02日 ⁄ 综合 ⁄ 共 1599字 ⁄ 字号 评论关闭
先写一个nodejs文件用于向服务器发送json数据:

jsonClient.js:
var http = require('http');
var crypto = require('crypto');//引入加密模块


var text = "phoneNumber=15210943874&key=99999999";
var hasher=crypto.createHash("md5");//md5加密
hasher.update(text);
var md5key=hasher.digest('hex');//hashmsg为加密之后的数据
console.log("the md5 is:",md5key);

var user = {
    PhoneNumber: '15210943874',
    authKey: md5key
};


//var userJson=JSON.stringify(user);
//varuserString='data='+userjson;//这种格式在服务器端解析的时候可解析为req.body.datda
var userString = JSON.stringify(user);//转换为json字符格式,在服务器端直接解析req.body
var headers = {
    'Content-Type': 'application/json',
    //如果使用的是varuserString='data='+userjson格式应将'Content-Type':设为'application/x-www-form-urlencoded'//form表单格式
    'Content-Length': userString.length
};

var options = {
    host: 'localhost',//主机:切记不可在前面加上HTTP://
    port: 3000,//端口号
    path: '/image',//路径
    method: 'POST',//提交方式
    headers: headers
};


var req = http.request(options, function (res) {
//    console.log('STATUS: ' + res.statusCode);
//    console.log('HEADERS: ' + JSON.stringify(res.headers));
    //  res.setEncoding('utf8');
    res.on('data', function (message) {
        var ret= eval('(' + message + ')');
        console.log('response : ' ,ret);
    });

});
req.on('error', function(e) {
    console.log('problem with request: ' + e.message);
});

// write data to request body
req.write(userString);//向req.body里写入数据
req.end();


用express创建一个工程,然后在app.js文件中加入
app.post('/image', function(req, res, next) {
    console.log(req.body);//请求中还有参数data,data的值为一个json字符串
// var data= eval_r('(' + req.body.data + ')');//需要将json字符串转换为json对象
// console.log("data="+data.PhoneNumber);
    console.log(req.body.PhoneNumber);//解析json格式数据
    res.contentType('json');//返回的数据类型
    res.send(JSON.stringify({ status:"success" }));//给客户端返回一个json格式的数据
    res.end();
});

抱歉!评论已关闭.