Arduino POST-запрос с использованием JSON - PullRequest
0 голосов
/ 28 сентября 2019

Я пытаюсь заставить свой 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");


...