我必须将数据(json对象)发送到另一个webserver(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);
这不起作用。我怎么能这样做?
答案 0 :(得分:16)
您正在重复请求的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);
请将代码中的请求主机和路径更新为您需要的值。如果它仍然不适合你,请告诉我。
答案 1 :(得分:2)
请列出确切的错误,“这不起作用......”对于识别问题不是很有帮助。对于小问题,代码也很好。
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上应该有一个服务器来响应/登录在这种情况下POST的数据登录凭证。