NodeJS创建HTTPS Rest主体请求JSON

时间:2017-09-25 10:09:21

标签: javascript json node.js https restful-url

我尝试使用以下代码在nodejs中执行HTTPS REST请求:

var querystring = require('querystring');
var https = require('https');

var postData = {
    'Value1' : 'abc1',
    'Value2' : 'abc2',
    'Value3' : '3'
};
var postBody = querystring.stringify(postData);

var options = {
    host: 'URL'
    port: 443,
    path: 'PATH'
    method: 'POST',
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
        'Content-Length': postBody.length
  }
};

var req = https.request(options, function(res) {
  console.log(res.statusCode);
  res.on('data', function(d) {
    process.stdout.write(d);
  });
});
req.write(postBody);
req.end();

req.on('error', function(e) {
  console.error(e);
});

请求有效,但不符合预期。 Body不会以JSON格式发送,看起来像:

  

RequestBody":"值1 = ABC1&安培;值2 = ABC2&安培;值3 = 3

输出应该如下:

  

RequestBody&#34;:&#34; [\ r \ n {\ r \ n \&#34; Value3 \&#34;:\&#34; 3 \&#34;,\ r \ n \&#34;值2 \&#34 ;:   \&#34; abc2 \&#34;,\ r \ n \&#34; Value1 \&#34;:\&#34; abc1 \&#34; \ r \ n} \ r \ n] < / p>

我认为它与stringify有关,也许我不得不将其转换为JSON格式..

3 个答案:

答案 0 :(得分:0)

在请求的标题中指定了'Content-Type': 'application/x-www-form-urlencoded'。您可以尝试将其更改为'Content-Type': 'application/json'

答案 1 :(得分:0)

您需要像这样更改content-type.try

var querystring = require('querystring');
var https = require('https');

var postData = {
    'Value1' : 'abc1',
    'Value2' : 'abc2',
    'Value3' : '3'
};
var postBody = postData;

var options = {
    host: 'URL'
    port: 443,
    path: 'PATH'
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',

  }
};

var req = https.request(options, function(res) {
  console.log(res.statusCode);
  res.on('data', function(d) {
    process.stdout.write(d);
  });
});
req.write(postBody);
req.end();

req.on('error', function(e) {
  console.error(e);
});

答案 2 :(得分:0)

我用以下方法解决了我的问题。

jsonObject = JSON.stringify({
    'Value1' : 'abc1',
    'Value2' : 'abc2',
    'Value3' : '3' 
});
var postheaders = {
    'Content-Type' : 'application/json',
    'Content-Length' : Buffer.byteLength(jsonObject, 'utf8')
};