Don't understand why the response body of the following request is empty:
request:
req.headers['User-Agent'] = 'request';
req.headers['Accept'] = 'text/html';
const options = {
url: config.prodURL,
headers: req.headers,
qs: req.query,
method: req.method
};
request(options, (err, resp, body) => {
console.log(resp);
});
I'm expecting HTML in this response, but for some reason, when I look at resp it displays body: ''
Part of the resp contains the href url and if I use this in any client, it displays the HTML code.
What is wrong with this config?
update
Here's the data with the exception of hrefas I cannot share this URL. err is null, here are the rest of the values:
{ url: 'http://my.url/',
headers:
{ 'user-agent': 'PostmanRuntime/7.15.2',
accept: '*/*',
'cache-control': 'no-cache',
'postman-token': '8c208831-580b-4460-b3e0-046d85789658',
host: 'localhost:8001',
'accept-encoding': 'gzip, deflate',
connection: 'keep-alive',
'User-Agent': 'request',
Accept: 'text/html' },
qs: { query-params... },
method: 'GET'
}
I believe it might be related to the response headers, the URL requested doesn't return any, so does requestJs require a content-type to be able to parse the body?
Related
I am trying to create script that could post comment in my thread on steam with node and request lib. Trying to achieve by doing something like this:
const body = {
comment: 'Sometext',
count: '15',
sessionid: session_id,
}
bumpingDiscussionsPostsModule.bumpInDiscussion=async() => {
const postHeader = {
method: 'POST',
uri: urlPost,
headers: {
Cookie: cookie
},
form: JSON.stringify(body)
}
const response = await request(postHeader);
console.log(response);
}
Tho steam keeps returning me returning {"success":false}, any clues what I am doing wrong?
I was just formatting it wrong. If someone might be looking for it, this gets the job done:
const doBump = await fetch(bumpingUri, {
method: 'post',
body: `comment=${process.env.BUMP_COMMENT}&count=15&sessionid=${process.env.CONN_SESID}&extended_data=${process.env.EXTENDED_DATA}&feature2=${featureID}oldestfirst=true&include_raw=true`,
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'accept': 'text/javascript, text/html, application/xml, text/xml, */*',
Cookie: process.env.CONN_STRING
}
});
var request = require('request');
var options = {
'method': 'POST',
'url': 'http://',
'headers': {
},
form: {
'username': '',
'password': ''
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
transforming this to axios request:
let data = qs.stringify({ 'username': '',
'password': '' })
const options = {
method: 'POST',data,
headers: { 'Content-Type': 'application/x-www-form-urlencoded'},
url: '',
};
response[0] = await Axios(options).then((res) => {
console.log("res",res)
return res.data
}
).catch((err) => {
console.log("err status", err.response.status)
return err.response.data
});
gives an error and the headers shown doesnt have the url encoded:
url: '',
method: 'post',
data: 'username=&password=',
headers: {
Accept: 'application/json, text/plain, */*',
'User-Agent': 'axios/0.19.2'
},
Why the content-type : url-encoded is not in the headers and only the Accept: 'application/json, text/plain, /' is showing.
You are not showing which error you are receiving but the way you are setting the Axios call seems right following the Axios documentation. So I suspect it is a problem on how you have set up your Node.js server.
If you are using Express.js v.4+, probably you forgot to set up in your server the directive to parse application/x-www-form-urlencoded content type as explained here in the official documentation.
app.use(express.urlencoded({ extended: true }))
If you are using the body-parser package you need to set up your server with:
app.use(bodyParser.urlencoded({extended: true}));
I am using ajax to send post to my app. In postman everything works as expected, however in browser, data comes in as x-www-form-urlencoded and data is missing.
Below is my ajax and postman configurations and their corresponding headers in req...
$.ajax({
url: '/',
headers: {
'Accept': 'application/json',
'Content-Type': "application/json"
}, // send as JSON
data: JSON.stringify(formData),
method: 'POST'
});
headers:
{ host: 'localhost:8080',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0',
accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'accept-language': 'en-US,en;q=0.5',
'accept-encoding': 'gzip, deflate',
referer: 'http://localhost:8080/',
'content-type': 'application/x-www-form-urlencoded',
'content-length': '0',
connection: 'keep-alive',
'upgrade-insecure-requests': '1',
pragma: 'no-cache',
'cache-control': 'no-cache' }
headers:
{ data: '{"name":"tester", "email": "t#t.com", "message":"This is a test"}',
contenttype: 'application/json',
datatype: 'xml/html/script/json',
'cache-control': 'no-cache',
'postman-token': 'cbaa5cbe-0ab8-4328-abfd-f5dc6a6acd90',
'user-agent': 'PostmanRuntime/7.1.1',
accept: '*/*',
host: 'localhost:8080',
'accept-encoding': 'gzip, deflate',
'content-length': '0',
connection: 'keep-alive' }
also my relevant server code:
app.use(bodyParser.json());
//handle urlencoded data
app.use(bodyParser.urlencoded({extended:false}));
app.post('/', function (req, res) {
console.log(res);
console.log('----------------------------------------------------------');
console.log(req);
//var jsonData = JSON.parse(req.headers.data);
console.log(req.body);
console.log(req.data);
let transporter = courier.createTransport({...});
let mailOptions = {...};
transporter.sendMail(mailOptions, function (error, info) {
if (error)
console.log(error);
else
console.log('email sent:' + info.response);
});
res.render('index', {
title: 'Projects',
projects: projects
});
});
app.get('/', function (req, res) {
res.render('index', {
title: 'Projects',
projects: projects
});
});
plz halp!
on you can just simply:
JSON.parse(data)
inside your
success: function(data){
var object =JSON.parse(data);
}
once the json parses the data you can do what ever you like.
I'm trying to send post request from nodejs, but unable to send through node. The request I have already tested on Postman,
Here is my Nodejs Code:
var rp = require('request-promise');
return rp({
url: Url,
method: "POST",
headers: {
"content-type": "application/x-www-form-urlencoded",
},
body: "Data=%3CSearchRequest%3E%0A%20%20%20%20%3CLoginDetails%3E%0A%20%20%20%20%20%20%20%20%3CLogin%3Etour%20booking%3C%2FLogin%3E%0A%20%20%20%20%20%20%20%20%3CPassword%3Exmltest%3C%2FPassword%3E%0A%20%20%20%20%3C%2FLoginDetails%3E%0A%20%20%20%20%3CSearchDetails%3E%0A%20%20%20%20%20%20%20%20%3CArrivalDate%3E2017-08-17%3C%2FArrivalDate%3E%0A%20%20%20%20%20%20%20%20%3CDuration%3E1%3C%2FDuration%3E%0A%20%20%20%20%20%20%20%20%3CRegionID%3E616%3C%2FRegionID%3E%0A%20%20%20%20%20%20%20%20%3CMealBasisID%3E0%3C%2FMealBasisID%3E%0A%20%20%20%20%20%20%20%20%3CMinStarRating%3E0%3C%2FMinStarRating%3E%0A%20%20%20%20%20%20%20%20%3CRoomRequests%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CRoomRequest%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CAdults%3E2%3C%2FAdults%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CChildren%3E2%3C%2FChildren%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CInfants%3E0%3C%2FInfants%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CChildAges%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CChildAge%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CAge%3E8%3C%2FAge%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FChildAge%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CChildAge%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CAge%3E8%3C%2FAge%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FChildAge%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FChildAges%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FRoomRequest%3E%0A%20%20%20%20%20%20%20%20%3C%2FRoomRequests%3E%0A%20%20%20%20%20%20%20%20%3CRoomRequests%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CRoomRequest%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CAdults%3E1%3C%2FAdults%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CChildren%3E0%3C%2FChildren%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CInfants%3E0%3C%2FInfants%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FRoomRequest%3E%0A%20%20%20%20%20%20%20%20%3C%2FRoomRequests%3E%0A%20%20%20%20%3C%2FSearchDetails%3E%0A%3C%2FSearchRequest%3E",
form: false,
}).then(function (body) {
console.log(body);
});
and here is my postman code:
POST /xml/book.aspx HTTP/1.1 Host: asmsajib.me Content-Type: application/x-www-form-urlencoded Cache-Control: no-cache Postman-Token: 9b9e6ea7-f7cb-f2a2-3fd7-5222cd9e0654 Data=%3CSearchRequest%3E%0A%20%20%20%20%3CLoginDetails%3E%0A%20%20%20%20%20%20%20%20%3CLogin%3Etour%20booking%3C%2FLogin%3E%0A%20%20%20%20%20%20%20%20%3CPassword%3Exmltest%3C%2FPassword%3E%0A%20%20%20%20%3C%2FLoginDetails%3E%0A%20%20%20%20%3CSearchDetails%3E%0A%20%20%20%20%20%20%20%20%3CArrivalDate%3E2017-08-17%3C%2FArrivalDate%3E%0A%20%20%20%20%20%20%20%20%3CDuration%3E1%3C%2FDuration%3E%0A%20%20%20%20%20%20%20%20%3CRegionID%3E616%3C%2FRegionID%3E%0A%20%20%20%20%20%20%20%20%3CMealBasisID%3E0%3C%2FMealBasisID%3E%0A%20%20%20%20%20%20%20%20%3CMinStarRating%3E0%3C%2FMinStarRating%3E%0A%20%20%20%20%20%20%20%20%3CRoomRequests%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CRoomRequest%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CAdults%3E2%3C%2FAdults%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CChildren%3E2%3C%2FChildren%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CInfants%3E0%3C%2FInfants%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CChildAges%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CChildAge%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CAge%3E8%3C%2FAge%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FChildAge%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CChildAge%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CAge%3E8%3C%2FAge%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FChildAge%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FChildAges%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FRoomRequest%3E%0A%20%20%20%20%20%20%20%20%3C%2FRoomRequests%3E%0A%20%20%20%20%20%20%20%20%3CRoomRequests%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CRoomRequest%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CAdults%3E1%3C%2FAdults%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CChildren%3E0%3C%2FChildren%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CInfants%3E0%3C%2FInfants%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FRoomRequest%3E%0A%20%20%20%20%20%20%20%20%3C%2FRoomRequests%3E%0A%20%20%20%20%3C%2FSearchDetails%3E%0A%3C%2FSearchRequest%3E
You need to set Content-Length for the raw post to work and also I changed your headers to init caps.
rp({
url: Url,
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded",
"Content-Length": Buffer.byteLength(data) // your data
},
form: false
}).then(function (body) {
console.log(body);
}).catch((err) => {
console.log(err);
});
How can I send both query string parameters and form data parameters in nodejs. I tried the following code. but it's not working. it is just hanging and no response is comming.
var url_req = require("request");
url_req({
pool: separateReqPool,
url: "https://somthing.com/v1/message/userF",
method: 'POST',
qs: {
action: "send-message",
c: "somecode_c",
cache: new Date().getTime(),
sid: "somecode_sid"
},
form: {
convId: "userF~userT~esp",
message: "<font face='Arial' size='10'>.</font>",
sendAs: "userF",
txnId: "userF~" + new Date().getTime() + "~number",
},
headers: {
'Content-Type': 'application/json;charset=utf-8',
'Cookie': 'some cookies',
'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:33.0) Gecko/20100101 Firefox/33.0',
'Accept-Language': "en-US,en;q=0.5",
'Connection': "keep-alive",
'Pragma': "no-cache",
'Cache-Control': "no-cache",
'Referer': "https://something.com/xframe.html?bc",
'Accept': ' text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Content-Length': 100,
'Host': "something.com"
}
}, function (error, response, body) {
if (error)
console.log(error);
else
console.log(body);
});