Невозможно выполнить POST с ESP8266 (espruino)

Я не могу отправить запрос на отправку (get отлично работает) с espruino. Я уже проверил документацию, и, похоже, это мой код:

let json = JSON.stringify({v:"1"});

let options = {
    host: 'https://******,
    protocol: 'https',
    path: '/api/post/*****',
    method: 'POST',
    headers:{
      "Content-Type":"application/json",
      "Content-Length":json.length
    }
  };

let post = require("http").request(options, function(res){
  res.on('data', function(data){
    console.log('data: ' + data);
  });
  res.on('close', function(data){
    console.log('Connection closed');
  });
});

post.end(json);

Консоль espruino возвращает только журнал console.log "соединение закрыто". Консоль сервера node.js (размещенная на heroku и протестированная с почтальоном) ничего не возвращает. Obv esp8266 подключен к сети

2 ответа

Решение

То, что вы делаете, выглядит нормально (пример HTTP Post здесь), однако Espruino в настоящий момент не поддерживает HTTPS на ESP8266 (на чипах недостаточно памяти для JS и HTTPS).

Таким образом, Эспруино будет игнорировать httpsв URL-адресе и через HTTP. Возможно, ваш сервер поддерживает запросы HTTP GET, но запросы POST должны выполняться через HTTPS, поэтому он не работает?

Если вам действительно нужно было использовать HTTPS с Espruino, тогда всегда есть официальные платы Espruino WiFi, или я считаю, что ESP32 также поддерживает его.

Вы используете пакет с именем "http", а затем пытаетесь отправить запрос по https. Вы также должны выйти из "data" в res.close, чтобы вы могли получить некоторые ошибки для работы.

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