как отправить запрос Post из узла.js на другой сервер (java)?

Я должен отправить данные (объект json) на другой веб-сервер (java).

Это мой узел.код 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.слушать(8090);

это не работает...как это сделать ?

2 ответов


вы повторяете переменные req и res для запроса post. Я обновил ваш код и протестировал его, работая с requestb.в

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

пожалуйста, обновите хост запроса и путь в коде до значений, которые вам нужны. Дайте мне знать, если это все еще не работает для вас.


пожалуйста, перечислите точную ошибку: "это не работает..."не очень полезно выявлять проблему. Код причем отлично с незначительных вопросов.

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 для данных, публикуемых в этом случае учетные данные для входа.