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);
});
Related
resumable uri: https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable&upload_id=ADPycducJGWQ62n6E0K5mD81RGJw-0eIsga8dBxarfSY_2Pk5hFJhBs230Q8ay
PUT request:
let postFile = await axios.request(
{
method: "PUT",
url: resumableURI,
headers: {
Authorization: `Bearer ${process.env.GOOGLE_ACCESS_TOKEN}`,
"Content-Length": req.files.muploadedFile.size,
},
body : bufferToStream(buffer)
}
)
console.log(postFile.data)
Is there any problem with code
After a while im getting this:
That’s an error.
Your client has taken too long to issue its request.
That’s all we know.
#kevintechie Thank you for response. Problem here is with axios put request. The code below works
axios.put(
`${resumableURI}`,
{
bufferToStream(buffer)
},{
headers: {
Authorization: `Bearer ${process.env.GOOGLE_ACCESS_TOKEN}`,
"Content-Length": req.files.muploadedFile.size,
"Content-Range": `bytes 0-${req.files.muploadedFile.size-1 }/${req.files.muploadedFile.size}`
}
}
).then( resp => {
console.log(resp)
}).catch( e => console.log(e))
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
}
});
This is the code I took from my professor's tutorial. LoginComp is just {username: '', password: ''}
const request = new Request("/users/login", {
method: "post",
body: JSON.stringify(loginComp),
headers: {
Accept: "application/json, text/plain, */*",
"Content-Type": "application/json"
}
});
// Send the request with fetch()
fetch(request)
.then(res => {
if (res.status === 200) {
return res.json()
}
})
.catch(error => {
console.log(error);
});
I have a backend server running at localhost:5000 with post routes at localhost:5000/users/login. The issue with this code is it assumes users/login is at localhost 3000 so I would get this error in console:
POST http://localhost:3000/users/login 404 (Not Found)
How do I make it so its localhost:5000 not 3000 (the client server)
You have to add http://localhost:5000/ to your url.
const request = new Request("http://localhost:5000/users/login", {
method: "post",
body: JSON.stringify(loginComp),
headers: {
Accept: "application/json, text/plain, */*",
"Content-Type": "application/json"
}
});
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?
The server only accepts data sent in the headers.
Doing it using this code the server is getting empty object:
const request = require('request')
request.post({
url: 'https://.....',
body: { userid: 'cris', gameid: '12' },
headers: { "Content-Type": "application/x-www-form-urlencoded"}
})
Doing it with Postman, the server gets the correct data:
How can i use the code to send the data in the headers?
Edit:
A printscreen with server info displayed in the browser, should help.
Try this
const request = require('request')
request.post({
url: 'https://.....',
headers: { 'Content-Type': 'application/json', 'Accept': 'application/json, text/plain', 'userid':'cris', 'gameid':'12'}
})
Try this
const request = require('request')
request.post({
url: 'https://.....',
body: JSON.stringify({ userid: 'cris', gameid: '12' }),
headers: { "Content-Type": "application/x-www-form-urlencoded"}
})
try this
body: { "userid": "cris", "gameid": "12" }