2

私は現在、GuillermoRauchsの「SmashingNode.Js」ブックを読んでいます。クライアント/サーバーをセットアップし、http接続を介してクライアントからサーバーに文字列を送信することがタスクである第7章で立ち往生しています。文字列はサーバーから印刷する必要があります。

クライアントコード:

var http = require('http'), qs = require('querystring');

function send (theName) {
    http.request({
        host: '127.0.0.1'
        , port: 3000
        , url: '/'
        , method: 'GET'
    }, function (res) {
        res.setEncoding('utf-8');
        res.on('end', function () {
            console.log('\n   \033[090m request complete!\033[39m');
            process.stdout.write('\n   your name:  ');
        })
    }).end(qs.stringify({ name: theName}));
}

process.stdout.write('\n  your name:  ');
process.stdin.resume();
process.stdin.setEncoding('utf-8');
process.stdin.on('data', function (name) {
   send(name.replace('\n', ''));
});

サーバー:

var http = require('http');
var qs = require('querystring');

http.createServer(function (req, res) {
    var body = '';
    req.on('data', function (chunk) {
        body += chunk;
    });
    req.on('end', function () {
        res.writeHead(200);
        res.end('Done');
        console.log('\n got name \033[90m' + qs.parse(body).name + '\033[39m\n');
    });

}).listen(3000);

クライアントとサーバーを起動します。クライアントは機能しているようです:

mles@se31:~/nodejs/tweet-client$ node client.js 

your name:  mles

   request complete!

your name:  

ただし、サーバー側では、未定義のみが表示されます。

mles@se31:~/nodejs/tweet-client$ node server.js 

got name undefined

この本によると、ここにも「mles」があるはずです。

4

1 に答える 1

3
, method: 'GET'

する必要があります

, method: 'POST'

GETリクエストには本文がないため、サーバー側で解析するものはありません。

于 2013-02-03T01:41:26.960 に答える