Я пытаюсь заставить свой Arduino (с экраном Ethernet) отправить запрос POST с телом JSON на мой локально размещенный сервер.
Я использую библиотеки ArduinoJson (версия 6) и Ethernet .
Я пытаюсь отправить POST запрос к локальной конечной точке (размещенной на моем ноутбуке) / route / test с использованием функции создания JSON ArduinoJSON.Используя библиотеку, я создаю DynamicJsonDocument с именем doc и записываю в него атрибуты.Затем я использую serializeJson , чтобы записать данные документа в запрос POST.
Моя проблема: Я делаю POST-запрос к конечной точке / route / test , но когда я утешаю тело журнала, оно выглядит пустым.Похоже, что я не включаю любое тело в свой пост-запрос
Используя utils.inspect
в объекте запроса, я получаю это:
тело: {}
Это проблема синтаксиса или в моем методе что-то не так?Любая помощь будет принята с благодарностью !!.
#include <ArduinoJson.h>
#include <Ethernet.h>
#include <SPI.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 10, 0, 0, 177 };
byte server[] = { x, x, x, x };
EthernetClient client;
void setup() {
//Initialize Ethernet and account for 1s delay
Ethernet.begin(mac, ip);
Serial.begin(9600);
delay(1000);
Serial.println("connecting...");
if (client.connect(server, 5000)) {
Serial.println("connected");
} else {
Serial.println("connection failed");
}
//Create JSON doc and write a "name" attribute
const size_t capacity = JSON_OBJECT_SIZE(1);
DynamicJsonDocument doc(capacity);
doc["name"] = "some random name";
//POST request
Serial.println("Begin POST Request");
client.println("POST /routes/test");
client.println();
client.println("Host: x.x.x.x");
client.println("User-Agent: Arduino/1.0");
client.println("Content-Type: application/json;charset=UTF-8");
client.println("Connection: close");
client.print("Content-Length: ");
client.println(measureJson(doc));
//This works like client.println, but prints doc to client
serializeJson(doc, client);
//To let me know that request has been completed
Serial.println("Sent Get Request");