VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > Java教程 >
  • 在nodejs中 Object的toString()方法 querystring的stringify() JSON.stringify()

刚学nodejs,做到一个例子:发送简单的HTTP请求。遇到一个问题,客户端给服务端发送的消息到服务端,服务端收不到消息,确切的说是“”。

以下是服务端代码:server.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const http = require("http");
const qs = require("querystring")
 
http.createServer(function(request,response){
    var body ="";
    request.on("data",function(chunk){
        body+=chunk;
    })
    request.on("end",function(){
        response.writeHead(200,{"ContentType":"text/html;charset=utf-8"});
        console.log(body)
        process.stdout.write("got name :"+ qs.parse(body)["name"]+"\n")
    })
 
 
}).listen(3000);

 以下是客户端代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var http = require("http");
var qs = require("querystring")
 
 
var options = {
    hostname: '127.0.0.1',
    port: 3000,
    path: '/',
    method: 'POST',
};
 
 
function getname(theName){    var b = {name:theName};    var a=qs.stringify(b)    console.log(typeof theName)    console.log("theName:"+theName+" ,b转换为string后的a:"+a);    http.request(options,function(response){        response.setEncoding('utf8');        var body ="";        response.on('data'function(chunk){            body+=chunk;        });        response.on('end',function (){            process.stdout.write("client compate!\n");        })    }).end(a);}
 
//正确代码
process.stdin.on("data",function(inputData){
    process.stdout.write("your name:"+inputData);
    console.log("输入内容: "+inputData+" 转换为string后:"+inputData.toString().replace("\r\n",""))//inputData 有回车
    getname(inputData.toString().replace("\r\n",""));
})
1
2
3
4
//错误代码<br>process.stdin.on("data",function(inputData){
    process.stdout.write("your name:"+inputData);
    getname(inputData);
})

服务端,在这里无需多说。我们看到客户端的错误代码:这里,没有对接收到的“用户输入数据”的inputData处理,所以这里的inputData是Object类型;

看到客户端反馈结果:

服务端的返回结果:

 

相继查看了b的类型:

相信这里已经知道了问题的根源:获得的参数是一个buffer类型的,导致后面解析出问题。那么在调用getname的时候把参数转换好就行了。这个逻辑应该可行。

但是在这里我就有一个疑问,这个接收到的输入的对象该怎么转换呢?

querystring:其中nodejs中有一个模块,querystring,作用是对URL的查询字符串进行解析;有stringify() 和parse()两个方法,一个是转字符串,一个是解析为对象;

JSON处理JSON字符串的;JSON.stringify()可以解析为string;

toString()方法:都可以解析为string

这里我们采用的是inputData.toString().这里只是传递参数,也不是跟URL相关,自然用这个。好了问题解决!

 

我从来不相信什么懒洋洋的自由。我向往的自由是通过勤奋和努力实现的更广阔的人生。 我要做一个自由又自律的人,靠势必实现的决心认真地活着。
 
来源:https://www.cnblogs.com/lixiuming521125/p/7504659.html

相关教程