Как сделать запрос POST с помощью Node.JS в Ghostbin?

Я пытаюсь отправить запрос POST на Ghostbin через Node.JS и его модуль request NPM. Вот как выглядит мой код:

Попытка 1:

reqest.post({
   url: "https://ghostbin.com/paste/new",
   text: "test post"
}, function (err, res, body) {
   console.info(res)
})

Попытка 2:

reqest.post({
   url: "https://ghostbin.com/paste/new",
   text: "test post",
   headers: {
      "Content-Type": "application/x-www-form-urlencoded",
      "Content-Length": 9
   }
}, function (err, res, body) {
   console.info(res)
})

Попытка 3:

reqest.post("https://ghostbin.com/paste/new", {form: {text: "test post"}}, function (err, res, body) {
   console.info(res)
})

Все эти попытки закончились логированием:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">\n<html><head>\n<title>406 Not Acceptable</title>\n</head><body>\n<h1>Not Acceptable</h1>\n<p>An appropriate representation of the requested resource /paste/new could not be found on this server.</p>\n<hr>\n<address>Apache/2.4.18 (Ubuntu) Server at ghostbin.com Port 443</address>\n</body></html>

Что-то мне не хватает в библиотеке request или в документация API Ghostbin?

Взгляните на запрос документы, похоже, text не вариант.

Roland Starke 25.05.2018 14:38

@RolandStarke, но это то, о чем просят документы Ghostbin, а также я попробовал еще одну вещь, которую только что отредактировал, и она также выдала ту же ошибку

APixel Visuals 25.05.2018 14:45
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
416
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы почти правы, но вам нужно передать данные в ключ form (как вы это делали в # 3) и передать user-agent в заголовке, как указано в api

reqest.post({
   url: "https://ghostbin.com/paste/new",
   form: {
     text: "test post"
   },
   headers: {
      'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36'
   }
}, function (err, res, body) {
   console.info(res)
})

Кажется, это работает, но как я могу заставить его регистрировать такую ​​информацию, как идентификатор вставки?

APixel Visuals 25.05.2018 15:10

Возьмите res.headers.location, чтобы получить URL-адрес вставки.

Chris G 25.05.2018 15:12

вот как я это делаю, используя проверенный запрос и работающий на меня

var request = require('request'); 
var url= 'your link here';
var headers = { // add the browser sent header request data
'User-Agent':       "Mozilla/5.0 (Windows NT 6.3; rv:48.0) Gecko/20100101      Firefox/48.0",
'Content-Type':     'application/x-www-form-urlencoded'    
}
// Configure the request
var options = {
url: url,
method: 'POST',
headers: headers,
form: {'user': 'value', 'pass': 'value'}
}
// Start the request
request(options, function (error, response, body) {
if (!error && response.statusCode == 200) {
console.info(body)
}); 

То же, что я сказал для поста Арифа Хана

APixel Visuals 25.05.2018 15:14

Другие вопросы по теме