@LepikhinEgor
Java developer

Почему Arduino теряет соединение после нескольких POST запросов?

Заливаю в Arduino скетч, который каждую секунду отправляет POST запрос на локальный сервер. Первые 8 запросов приходят, а потом теряется соединение. Не понятно почему так происходит
При отправке GET запросов каждую секунду никаких проблем не возникает.
P.S На сервере никаких ошибок и исключений
Код скетча
#include <SPI.h>
#include <Ethernet2.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress server(192, 168, 0, 228);  // numeric IP for Google (no DNS)
//char server[] = "www.google.com";    // name address for Google (using DNS)

IPAddress ip(192, 168, 0, 229);

void setup() {
  Serial.begin(9600);
  Ethernet.init(4);
  while (!Serial) {
  }

  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    Ethernet.begin(mac, ip);
  }
  delay(1000);
  Serial.println("connecting...");

}

void loop()
{

  EthernetClient client;

String data = "{\"login\":\"admin\",\"password\":\"qwerty\",\"deviceName\":\"ard\",\"deviceType\":\"nano\",\"sensorsValue\":{\"temp\":36.0,\"light\":1023.0,\"humiditu\":233.0}}";
  
  if (client.connect(server, 8080)) {
    Serial.println("connected");
    client.println("POST /intler_iot_war_exploded/send-device-data HTTP/1.1");
    client.println("Host: 192.168.0.228:8080");
    client.println("Content-Type: application/json");
    client.println("Connection: close");
    client.print("Content-Length: ");
    client.println(data.length());
    client.println();
    client.print(data);
    client.println();
    Serial.println(client);
  }
  else {
    Serial.println("connection failed");
  }

  delay(1000);
}

Вывод в порт
connecting...
connected
1
connected
1
connected
1
connected
1
connected
1
connected
1
connected
1
connected
1
connected
1
connection failed
connection failed
connection failed
  • Вопрос задан
  • 173 просмотра
Решения вопроса 1
@LepikhinEgor Автор вопроса
Java developer
Нашел ошибку, в итоге оказалось что диспатчер сервлет(сервер на Java + Spring) отправлял ошибку 500 в ответ, так как я забыл добавить аннотацию @ResponceBody и он не мог найти view для ответа. Почему запросы работали первый 8 раз так и не понятно... Ну да и ладно
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы