Запрос POST не работает

Я следую руководству по хранению данных датчиков в MySQL:

Руководство

Мой запрос POST не возвращает никаких результатов на мой сервер. Сейчас я только сохраняю температуру.

Вот мой код для сохранения данных:

void sendData(double input) {
  String data = "sensorid=3000000&temp=" + doubleToString(input, 2) + "&hum=1.2";
  
  if (client.connect("192.168.1.50", 80)) {
    client.println("POST /arduino/add.php HTTP/1.1");
    client.println("Host: 192.168.1.50");
    // client.println("User-Agent: Arduino/1.0");
    // client.println("Connection: close");
    client.println("Content-Type: application/x-www-form-urlencoded");
    client.print("Content-Length: ");
    client.print(data.length());
    client.println();
    client.print(data);

    Serial.println("Sent data: " + data);
  }
  
  if (client.connected()) {
    client.stop(); 
  }

  delay(300000);
}

Я закомментировал два заголовка, так как это не дало никаких других результатов. Мой Serial.println выдает: Отправленные данные: sensorid=3000000&temp=24.00&hum=1.2, что означает, что Arduino подключен к указанному IP-адресу и что мои данные запроса такие, как мне нужно. Они также отлично работают, когда я тестирую с помощью Requestmaker, поэтому я почти уверен, что моя ошибка связана с тем, как я делаю запрос здесь.

Есть ли у вас какие-либо идеи, как я могу решить или отладить эту проблему?

, 👍0

Обсуждение

Между заголовками и телом запроса должна быть пустая строка. Поэтому вам нужно println() (а не print()) в конце последнего заголовка., @Edgar Bonet

Попробуйте использовать print() с '\n' в конце (только новая строка, а не возврат каретки). xportSendTextNoLine("C192.168.200.136/80\n"); sprintf(запрос,"GET /debug.php?dat=%u HTTP/1.0\n\n",значение); xportSendTextNoLine(request); <-- У меня это сработало. Но вам придется немного изменить код на arduino., @Paul

вы решили эту проблему. У меня точно такая же проблема, и я пришел к такому же выводу: ошибка возникает из-за того, как я делаю запрос с ардуино., @mvcharcos

да, первый комментарий был решением моей проблемы. Заканчивайте на println вместо print. Не удалось отметить его как ответ, так как это был всего лишь комментарий., @Ruben Ravnå


1 ответ


Лучший ответ:

1

Ответил Эдгар Бонет

Между заголовками и телом запроса должна быть пустая строка. Поэтому вам нужно println() (а не print()) конец последнего заголовка.

,