Запрос 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, поэтому я почти уверен, что моя ошибка связана с тем, как я делаю запрос здесь.
Есть ли у вас какие-либо идеи, как я могу решить или отладить эту проблему?
@Ruben Ravnå, 👍0
Обсуждение1 ответ
Лучший ответ:
Ответил Эдгар Бонет
Между заголовками и телом запроса должна быть пустая строка. Поэтому вам нужно println()
(а не print()
) конец последнего заголовка.
- Как получить HTTPS на Arduino?
- Как увеличить скорость записи на SD-карту в Ардуино
- Клиент MQTT на Arduino + SIM900
- Arduino Ethernet Shield при использовании контактов Arduino Mega
- Ethernet nodemcu
- Удаленная загрузка кода на плату Arduino через интернет
- Экран Ethernet не получает IP
- Где я могу найти лучшую схему выводов для платы «Arduino Ethernet»?
Между заголовками и телом запроса должна быть пустая строка. Поэтому вам нужно
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å