我是初学者,我对服务器的响应有些麻烦。
基本上我正在使用Express来使其工作,但它没有,并在客户端服务器文件中的request.body中返回'undefined'。
这是我服务器上的路由器代码。此代码工作正常,并在邮递员中发送良好的响应:
child = childProcess.exec('javac code.java', function (err, output, outerr) {
if (err) {
console.log(err.message);
res.end(err.message);
}
else if (outerr) {
res.end(outerr);
}
else if (output) {
childProcess.exec('java code', function (err, output, outerr) {
if (err) {
res.end(err.message);
}
else if (outerr) {
res.end(outerr);
}
else if (output) {
res.end(output);
}
...And the closing quotes
这是另一个客户端服务器。 这个服务器向上面的服务器发出请求,主体中有java代码来执行它。
它正在发送空响应并在控制台中 它的意思是'recived response:undefined'
router.post('/codeEditor', function (req, res) {
var request = http.request({port: 8000, method: 'POST', path: '/java', headers:{'Content-type':'application/json'}}, function (response) {
console.log('recived response: '+ response.body);
res.end(response.body);
});
request.write(JSON.stringify({'sample':'sample'}));
request.end();
request.on('error', function(e) {
console.log('problem with request: ' + e.message);
});
});
request.write(JSON.stringify({'sample':'sample'}));
用于测试目的,因为它应该传递req.body对象。
我已经安装了body.parser,它看起来像这样:
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var router = require('./routes');
app.use(bodyParser.json({type: 'application/json'}));
app.use(bodyParser.urlencoded({extended:false}));
app.use(bodyParser.text({type: '*/*'}));
app.use('/', router);
app.listen(8000, function () {
console.log('server listening on port 8000');
});
所以我不知道这里发生了什么 谢谢你的帮助! :)
答案 0 :(得分:0)
我做了
我不知道它是如何可能的,但我只是改变了客户端服务器代码:
var request = http.request({port: 8000, method: 'POST', path: '/java', headers:{'Content-type':'application/json'}}, function (response) {
console.log('recived response: '+ response.body);
res.end(response.body);
});
要:
var request = http.request({port: 8000, method: 'POST', path: '/java', headers:{'Content-type':'text/plain'}}, function (response) {
response.on('data', function (chunk) {
res.end(chunk);
});
});
就是这样!所以不是一个很大的改变,但它让我今天感到高兴:))
答案 1 :(得分:-1)
您在java执行服务器上使用res.end
。哪个结束请求没有任何数据。
如果您打算发回数据,请使用res.send
。
This提供有关两者之间差异的详细信息。