Nikunj K.
Nikunj K.

Reputation: 9199

node.js + request => response showing junk response

I am using the node.js + request for send HTTP request to URL. I required the JSON response, but I get junk character.

Here is my node.js code

var request = require('request');
var post_data = { UserName: "xxxxx", Password: "xxxxx" };

var post_options = {
  url: 'http://xxxxxxx.info/api/CoreUser/cognitoLogin',
  method: 'POST',
  form: post_data,
  headers: {
    'AppID': 'zNiphaJww8e4qYEwJ96g555HTAAbAXdj',
    'OAuth': 'xxxxxxxxxxxxxxxxxx',
    //'User-Agent': 'Super Agent/0.0.1',
    'Content-Type': 'application/json;charset=UTF-8',
  }
};
// Set up the request
request(post_options, function (error, response, body) {
  console.log(response.statusCode);
  if (!error && response.statusCode == 200) {
    console.log("200");
    console.log(response);

  }
});

But I received response in junk characters.

enter image description here I need result in jSON format, What is wrong in this request?

Upvotes: 0

Views: 339

Answers (2)

Nikunj K.
Nikunj K.

Reputation: 9199

I found the issue, reason is that API response send in gZip format. Here is the change we have to made here. Just enable gzip: true that resolve the things.

var request = require('request');
var post_data = { UserName: "xxxxx", Password: "xxxxx" };

var post_options = {
  url: 'http://xxxxxxx.info/api/CoreUser/cognitoLogin',
  method: 'POST',
  gzip: true,
  form: post_data,
  headers: {
    'AppID': 'zNiphaJww8e4qYEwJ96g555HTAAbAXdj',
    'OAuth': 'xxxxxxxxxxxxxxxxxx',
    //'User-Agent': 'Super Agent/0.0.1',
    'Content-Type': 'application/json;charset=UTF-8',
  }
};
// Set up the request
request(post_options, function (error, response, body) {
  console.log(response.statusCode);
  if (!error && response.statusCode == 200) {
    console.log("200");
    console.log(response);

  }
});

Upvotes: 1

Maielo
Maielo

Reputation: 732

You are missing { json: true } in request call

request(post_options, { json: true }, function (error, response, body) {
  console.log(response.statusCode);
  if (!error && response.statusCode == 200) {
    console.log("200");
    console.log(response);

  }
});

Upvotes: 0

Related Questions