Узел.JS: как отправить заголовки с данными формы с помощью модуля запроса
у меня есть код, как показано ниже:
var req = require('request');
req.post('someUrl',
{ form: { username: 'user', password: '', opaque: 'someValue', logintype: '1'}, },
function (e, r, body) {
console.log(body);
});
Как я могу установить заголовки для этого? Мне нужен user-agent, content-type и, вероятно, что-то еще, чтобы быть в заголовках:
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36',
'Content-Type' : 'application/x-www-form-urlencoded'
};
Я пробовал несколькими способами, но я могу отправить заголовок или данные формы, не удалось отправить оба.
4 ответа:
мне наконец-то удалось это сделать. Ответ в фрагменте кода ниже:
var querystring = require('querystring'); var request = require('request'); var form = { username: 'usr', password: 'pwd', opaque: 'opaque', logintype: '1' }; var formData = querystring.stringify(form); var contentLength = formData.length; request({ headers: { 'Content-Length': contentLength, 'Content-Type': 'application/x-www-form-urlencoded' }, uri: 'http://myUrl', body: formData, method: 'POST' }, function (err, res, body) { //it works! });
Это должно работать.
var url = 'http://<your_url_here>'; var headers = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Firefox/24.0', 'Content-Type' : 'application/x-www-form-urlencoded' }; var form = { username: 'user', password: '', opaque: 'someValue', logintype: '1'}; request.post({ url: url, form: form, headers: headers }, function (e, r, body) { // your callback body });
Я думаю, это просто потому, что вы забыли HTTP-МЕТОД. По умолчанию HTTP-метод запроса-GET.
вы должны добавить
method: 'POST'
и ваш код будет работать, если ваш сервер получит метод post.var req = require('request'); req.post({ url: 'someUrl', form: { username: 'user', password: '', opaque: 'someValue', logintype: '1'}, headers: { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36', 'Content-Type' : 'application/x-www-form-urlencoded' }, method: 'POST' }, function (e, r, body) { console.log(body); });
Я нашел решение этой проблемы и я должен работать, я уверен в этом, потому что я также сталкиваются с той же проблемой
вот мое решение----->
var request = require('request'); //set url var url = 'http://localhost:8088/example'; //set header var headers = { 'Authorization': 'Your authorization' }; //set form data var form = {first_name: first_name, last_name: last_name}; //set request parameter request.post({headers: headers, url: url, form: form, method: 'POST'}, function (e, r, body) { var bodyValues = JSON.parse(body); console.log(updatedValues.first_name); console.log("===================================="); console.log('error:', e); // Print the error if one occurred console.log('statusCode:', r && r.statusCode); // Print the response status code if a response was received console.log('body:', body); // Print the HTML for the Google homepage. console.log("===================================="); res.send(bodyValues); });