2013-12-11 91 views
4

我必须发送数据(json对象)到另一个web服务器(java)。如何发送从node.js到另一个服务器(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);

这不工作...怎么办?

回答

7

您正在重复发送请求的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); 

请更新代码到你需要的值请求主机和路径工作。让我知道它是否仍然不适合你。

+0

谢谢你的回复....我已经试过这一个node.js服务器到另一个node.js服务器,这是发送请求,但我无法获得数据....如何获得? req.query就像空的 – silvesterprabu

+0

使用'req.body'来获取其他服务器上的数据。 – vmx

+0

我发送json对象作为数据,所以我应该在这里改变内容类型?如果是这样,我该怎么办? – silvesterprabu

1

请列出确切的错误,“这是行不通的...”对识别问题没有多大帮助。代码更好,但有小问题。

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'ed登录凭据/登录响应。