如何发送请求从node.js到另一台服务器(Java)?

我必须发送数据(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 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);

这是不行的…怎么办?

您正在重复req和res请求的resvariables。 我已经更新了您的代码并使用requestb.in进行了testing

 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); 

请将代码中的请求主机和path更新为您所需的值。 让我知道如果它仍然不适合你。

请列出确切的错误,“这是行不通的”,是不是很有助于确定问题。 代码是更好的小问题。

 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数据,在这种情况下是login凭证。