Node.js 如何将Post请求从express.js发送到另一台服务器(java)?
我必须将数据(json对象)发送到另一个Web服务器(java) 这是我的node.js代码Node.js 如何将Post请求从express.js发送到另一台服务器(java)?,node.js,post,request,Node.js,Post,Request,我必须将数据(json对象)发送到另一个Web服务器(java) 这是我的node.js代码 var express = require('express'); var app = express(); app.get('/', function (req, res) { var data = querystring.stringify({ username: "myname", password: " pass" }); var o
var express = require('express');
var app = express();
app.get('/', function (req, res) {
var data = querystring.stringify({
username: "myname",
password: " pass"
});
var options = {
host: 'www.javaserver.com',
port: 8070,
path: '/login',
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': Buffer.byteLength(data)
}
};
var req = http.request(options, function (res) {
res.setEncoding('utf8');
res.on('data', function (chunk) {
console.log("body: " + chunk);
});
});
req.write(data);
req.end();
});
app.listen(8090);
这是行不通的。如何才能做到这一点?请列出确切的错误,“这不起作用…”对识别问题没有多大帮助。此外,代码还可以处理一些小问题
var http = require("http");
var querystring = require("querystring");
var express=require('express');
var app=express();
app.get('/',function(req, res) {
var data = querystring.stringify({
username: "myname",
password: " pass"
});
var options = {
host: 'www.javaserver.com',
port: 8070,
path: '/login',
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': Buffer.byteLength(data)
}
};
var req = http.request(options, function(res)
{
res.setEncoding('utf8');
res.on('data', function (chunk) {
console.log("body: " + chunk);
});
});
req.write(data);
req.end();
});
app.listen(8090);
唯一需要注意的是,在www.javaserver.com:8070上应该有一个服务器,为发布的数据提供/login响应。在本例中,为发布请求提供登录凭据。您正在重复req和res变量。我已经更新了您的代码,并使用requestb.in对其进行了测试
var express = require('express');
var querystring = require('querystring');
var http = require('http');
var app = express();
app.get('/', function (req, res) {
var data = querystring.stringify({
username: "myname",
password: " pass"
});
var options = {
host: 'requestb.in',
port: 80,
path: '/nfue7rnf',
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': Buffer.byteLength(data)
}
};
var httpreq = http.request(options, function (response) {
response.setEncoding('utf8');
response.on('data', function (chunk) {
console.log("body: " + chunk);
});
response.on('end', function() {
res.send('ok');
})
});
httpreq.write(data);
httpreq.end();
});
app.listen(8090);
请将代码中的请求主机和路径更新为所需的值。如果仍然不适合您,请告诉我。非常感谢您的回复……我已尝试将此node.js服务器连接到另一个node.js服务器,这正在发送请求,但无法获取数据……如何获取?req.query像emptyUse
req.body
一样来获取另一台服务器上的数据。我正在发送json对象作为数据,所以我应该在这里更改内容类型吗?如果是,我该怎么办?将其设置为application/json
,您可能不需要对post数据进行字符串化。另外,如果可能,使用request
模块,使用http.request
更方便。