Как отправить HTTP-post данные в Node Express API с Arduino esp822 6?
Я отправляю данные в этот веб-API по протоколу HTTP https://morning-cliffs-85779.herokuapp.com /api/users с Arduino , подключенного к esp8226. Я использую библиотеку wificp для данных HTTP_POST.
API REST размещены в Heroku.
Когда я публикую это, Arduino дает ответ
Подключено к серверу
[WiFiEsp] Ошибка отправки пакета данных (2)
[WiFiEsp] Не удалось выполнить запись в сокет 3
[WiFiEsp] Отключение 3
и сервер Heroku дает ответ
at=error code=H13 desc="Соединение закрыто без ответа"
Ниже приведен код Arduino:
if (client.connect(server, 80)) {
Serial.println("Connected to server");
// Делаем HTTP-запрос
String content = "id=5bc58842bdfea0153bb27214&volt=7";
client.println("POST /api/users HTTP/1.1");
client.println("Host: morning-cliffs-85779.herokuapp.com:80");// ("Хост": хост:порт)
client.println("Accept: */*");
client.println("Content-Length: " + content.length());
client.println("Content-Type: application/x-www-form-urlencoded");
client.println();
client.println(content);
}
Это Node Express API:
app.post('/api/users', function (req, res) {
console.log('here');
if (req.body.id) {
DevReading.findByIdAndUpdate(req.body.id, {
volt: req.body.volt
}, function (err, reading) {
if (err) throw err;
res.send('Update Success');
});
}
else {
var newDevReading = DevReading ({
deviceName: 'test',
volt: req.body.volt
});
newDevReading.save(function (err) {
if (err) throw err;
res.send('Reading Post Success');
});
}
});
@tony mathew, 👍1
Обсуждение1 ответ
▲ 2
Это код?
`if (client.connectSSL(server, 443)) {
Serial.println("Connected to server");
// Делаем HTTP-запрос
String PostData = content + volt;
Serial.println(PostData);
client.println("POST /api/users HTTP/1.1");
client.println("Host: morning-cliffs-85779.herokuapp.com");
client.println("Cache-Control: no-cache");
client.println("Content-Type: application/x-www-form-urlencoded");
client.print("Content-Length: ");
client.println(PostData.length());
client.println();
client.println(PostData);
}`
Надеюсь, это кому-нибудь поможет
,
@tony mathew
Смотрите также:
- HTTP GET запрос с использованием Arduino Uno и ESP8266
- ESP8266 отправляет веб-страницу клиенту, но html-коды отображаются в браузере вместо веб-страницы
- Запрос POST (HTTPClient) с ESP8266, не работающим на локальном хосте (код http = -1)
- ESP8266 HTTPS post запрос тела сообщения с WifiClientSecure
- Esp8266 не отвечает на запрос от приложения для Android, созданного с помощью MIT App Inventor
- ошибка 404 в запросе HTTP GET с Arduino Uno и ESP8266 с использованием AT-команд
- Проблема с HTML-кодом в ESP8266 WebServer
- Как защитить ссылку/URL-адрес формы ESP-12E для управления светодиодом
вы должны использовать SSL для подключения по https, @Juraj
как мне это сделать?, @tony mathew
см. пример WebClientSSL, @Juraj
Заголовок Host не должен содержать порт. Измените
Host: Morning-cliffs-85779.herokuapp.com:80"
наHost: Morning-cliffs-85779.herokuapp.com"
, @Gerben