0

我正在尝试让我的 Arduino(带有以太网屏蔽)将带有 JSON 正文的 POST 请求发送到我的本地托管服务器。

我正在使用ArduinoJson(版本 6)和以太网库。

我正在尝试使用 ArduinoJSON 的 JSON 创建功能向本地端点(托管在我的笔记本电脑上)/routes/test发送POST请求。使用该库,我创建了一个名为doc的 DynamicJsonDocument并向其写入属性。然后我使用serializeJson将文档的数据写入 POST 请求。

我的问题:我向端点/routes/test发出 POST 请求,但是当我 console.log 正文时,它显示为空。似乎我的帖子请求中没有包含任何正文

在请求对象上使用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");


4

0 回答 0