নোড.জেএস: অনুরোধ মডিউলটি ব্যবহার করে ফর্ম ডেটা সহ শিরোনাম কীভাবে প্রেরণ করবেন?


111

আমার নীচের মত কোড আছে:

var req = require('request');

req.post('someUrl',
   { form: { username: 'user', password: '', opaque: 'someValue', logintype: '1'}, },
   function (e, r, body) {
      console.log(body);
});

আমি কীভাবে এর জন্য শিরোনাম সেট করতে পারি? হেডারে থাকাতে আমার ব্যবহারকারীর এজেন্ট, বিষয়বস্তুর ধরণ এবং সম্ভবত অন্য কিছু দরকার:

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' 
};

আমি একাধিক উপায়ে চেষ্টা করেছি তবে আমি হয়ડર বা ফর্ম-ডেটা প্রেরণ করতে পারি, উভয়ই প্রেরণ করতে ব্যর্থ হয়েছি।

উত্তর:


194

আমি অবশেষে এটি করতে পেরেছি। নীচে কোড স্নিপেটে উত্তর:

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!
  });

নতুন ত্রুটি নিক্ষেপ করুন ('অপরিজ্ঞাতকৃত বৈধ ইউরি বা বিকল্পগুলির অবজেক্ট নয়' ') ^ ত্রুটি: অপরিজ্ঞাত কোনও বৈধ ইউরি বা বিকল্পগুলির অবজেক্ট নয়। অনুরোধে (সি: \ ব্যবহারকারীগণ j পিজেটি \ নোড_মডিউলগুলি \ অনুরোধ \ সূচক.জেএস: ৪৪: ১১) অনুরোধ করুন। (সি: \ ব্যবহারকারীগণ j pjt \ নোড_মডিউলগুলি \ অনুরোধ \ অনুরোধ.js: 186: 22) emitTwo (ইভেন্ট.js: 106: 13) এ অনুরোধ.ইমিটে (ইভেন্ট.জেএস: 194: 7) অনুরোধে at <নামবিহীন> (সি: \ ব্যবহারকারীগণ j পিজেটি \ নোড_মডিউলগুলি \ অনুরোধ \ অনুরোধ.js: 1163: 10) এমিটনে (ইভেন্ট.জেএস: 96: 13) অনুরোধ.ইমিটে (ইভেন্ট.জেএস: 191: 7)
তামিলসেলভেন কে

এটি আমার পক্ষে কাজ করে না যেখানে নীচের উত্তরটি কেবল কোনও বস্তুকে ফর্ম সেট করে।
ওজিজিসাকস

49

এই কাজ করা উচিত.

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
});

ধন্যবাদ, তবে মনে হয় এই ক্ষেত্রে ফর্ম ডেটা সঠিক উপায়ে প্রেরণ করা হয়নি। আমার কাছে প্রায় একই কোড। নেট এবং ফর্ম ডেটা প্রেরণের ক্ষেত্রে আমার শরীরে লগইন ফর্ম না থাকা এবং টোকেন থাকা উচিত। আমি শীঘ্রই এটি এখানে পোস্ট করব, সম্ভবত এটি সাহায্য করবে
মাইকোলা জি

17

আমি মনে করি এটি ঠিক কারণ আপনি HTTP পদ্ধতি ভুলে গেছেন । অনুরোধের ডিফল্ট এইচটিটিপি পদ্ধতিটি জিইটি।

আপনার যুক্ত করা উচিত method: 'POST'এবং আপনার ব্যাকএন্ড পোস্ট পদ্ধতিটি গ্রহণ করলে আপনার কোড কাজ করবে work

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);
  });

1
এটি স্ট্রিংফাইয়ের উপর নির্ভর করে না কারণ এটি পড়া সহজ করে তোলে This
কীথ জন হাচিসন

6

আমি এই সমস্যার সমাধান খুঁজে পেয়েছি এবং আমার কাজ করা উচিত আমি এ সম্পর্কে নিশ্চিত যেহেতু আমারও একই সমস্যার মুখোমুখি

এখানে আমার সমাধান ----->

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);
    res.send(bodyValues);
});

1
আমি আমার উত্তর সম্পাদনা করেছি দয়া করে দেখুন এবং তারপরে কোন সমস্যা আছে কিনা তা বলুন। আপনাকে ধন্যবাদ
চেতনা জোশী

আপনার উত্তরটি সঠিক এবং আমাকেও সহায়তা করেছে, তবে সংক্ষিপ্ত কোডটি কার্যকর করার চেষ্টা করুন যা কেবলমাত্র সমাধানটির ব্যাখ্যা দেয়
অ্যামি

2

বিকল্পগুলিতে পোস্ট করার জন্য কেবল সেট পদ্ধতিটি মনে রাখবেন। এখানে আমার কোড

var options = {
    url: 'http://www.example.com',
    method: 'POST', // Don't forget this line
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
        'X-MicrosoftAjax': 'Delta=true', // blah, blah, blah...
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36',
    },
    form: {
        'key-1':'value-1',
        'key-2':'value-2',
        ...
    }
};

//console.log('options:', options);

// Create request to get data
request(options, (err, response, body) => {
    if (err) {
        //console.log(err);
    } else {
        console.log('body:', body);
    }
});
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.