Синтаксический анализатор JSON терпит неудачу из-за того, что отправляется количество байтов

esp8266 json

Извините, что я новичок в этом деле. Я пытаюсь прочитать ответ JSON с моего сайта с помощью ESP8266, но он продолжает терпеть неудачу. Я использую следующий код:

WiFiClientSecure httpsClient;    //Declare object of class WiFiClient
httpsClient.setInsecure();
httpsClient.setTimeout(15000); // 15 Seconds  

if (httpsClient.connect(host, httpsPort)) {

  String Data ="/IOT/Device_Setup.php?MAC="+deviceMAC;
      
  httpsClient.print(String("POST ") + Data + " HTTP/1.1\r\n" +
   "Host: " + host + "\r\n" +               
   "Connection: close\r\n\r\n");

  while (httpsClient.connected()) {
    String line = httpsClient.readStringUntil('\n');
    Serial.println(line);
    if (line == "\r") {
      Serial.println("headers received");
      break;
    }
  }
  String payload = "";    
  while (httpsClient.available()) {        
    char c = httpsClient.read();
    payload=payload+c;
  }

  Serial.println(payload);

  // Allocate JsonBuffer
  // Use arduinojson.org/assistant to compute the capacity.
  const size_t capacity = JSON_OBJECT_SIZE(3) + JSON_ARRAY_SIZE(2) + 60;
  StaticJsonDocument<200> jsonBuffer;
  // Parse JSON object
  DeserializationError error = deserializeJson(jsonBuffer, payload);
  if (!error) {

    const char* Switch = jsonBuffer["Switch"];
    const char* LED = jsonBuffer["LED"];
    const char* DHT = jsonBuffer["DHT"];
  
    // Decode JSON/Extract values
    Serial.print("Switch = ");
    Serial.println(Switch);
    Serial.print("LED = ");
    Serial.println(LED);
    Serial.print("DHT = ");
    Serial.println(DHT);
  }
}

Когда я распечатываю полезную нагрузку после заголовка, я получаю следующие выходные данные:

22
{"Переключатель":"0","СВЕТОДИОД":"0","DHT":"1"}
0

Я знаю, что 22-это шестнадцатеричное значение для числа отправляемых байтов. Есть ли способ игнорировать числа и просто использовать код JSON?

, 👍1

Обсуждение

как же он терпит неудачу?, @jsotola

затем происходит фрагментарное кодирование передачи. установите длину содержимого на сервере, чтобы избежать этого., @Juraj

Согласитесь, это [Chunked Transfer Encoding](https://fr.wikipedia.org/wiki/Chunked_transfer_encoding), используйте HTTP/1.0, чтобы избежать этого. См. Также [JsonHttpClient.ino](https://arduinojson.org/v6/example/http-client/) вкл. arduinojson.org..., @Benoit Blanchon

Спасибо всем. Добавление размера в заголовок сработало., @Dan