Как отправить метод POST с JSON? Ардуино УНО R3 + SIM900
arduino-uno
json
Почему серверная часть php не загружает данные из arduino? Что я сделал не так?
String reading="{\"latitude\": 12.983027, \"longitude\": 80.2594}";
mySerial.println("AT+HTTPINIT");
toSerial(1000);
mySerial.println("AT+HTTPPARA=\"CID\",1");
toSerial(1000);
mySerial.println("AT+HTTPPARA=\"URL\",\"http://gerro.usermd.net/updateData.php\"");
toSerial(1000);
mySerial.println("AT+HTTPPARA=\"CONTENT\", \"application/json\"");
toSerial(1000);
mySerial.println("AT+HTTPDATA=" + String(reading.length()) + ",100000");
toSerial(5000);
mySerial.println(reading);
toSerial(1000);
mySerial.println("AT+HTTPACTION=1");
toSerial(15000);
mySerial.println("AT+HTTPREAD");
toSerial(1000);
mySerial.println("AT+HTTPTERM");
toSerial(500);
Результат:
AT+HTTPINIT
OK
AT+HTTPPARA="CID",1
OK
AT+HTTPPARA="URL","http://gerro.usermd.net/updateData.php"
OAT+HTTPPARA="CONTENT", "application/json"
OK
AT+HTTPDATA=46,100000
DOWNLOAD
OK
AT+HTTPACTION=1
OK
+HTTPACTION:1,200,55
AT+HTTPREAD
+HTTPREAD:55
array(0) {
}
array(0) {
}
nic ciekAT+HTTPTERM
OK
Обновление
void toSerial(int delay_ms)
{
delay(delay_ms);
while(mySerial.available())
{
Serial.write(mySerial.read());
}
}
PHP
<?php
var_dump($_POST);
if (isset($_POST['latitude']) && isset($_POST['longitude']) && $_SERVER['REQUEST_METHOD'] === 'POST') {
//code
} else {
echo 'nic';
}
@wgerro, 👍1
Обсуждение1 ответ
▲ 1
Вы должны были изменить файл php:
var_dump($_POST);
к:
echo print_r(json_decode(file_get_contents("php://input")));
Спасибо!
,
@wgerro
Смотрите также:
- Получение всех данных моего объекта JSON из Serial.read() сразу
- Последовательная связь от Arduino до ESP8266 NodeMCU работает, но от NodeMCU до Arduino не работает
- Строка JSON для Arduino WiFi версии 2
- Как преобразовать сериализованную строку JSON обратно в объект JSON?
- Пользовательская библиотека для Arduino для кодирования и декодирования веб-токенов JSON
- Что лучше? GPRS SIM800L или GPRS SIM900?
- Как установить максимальное время выполнения операции
- Как использовать SPI на Arduino?
Что именно делает
toSerial()
? Опубликуйте все это., @SoreDakeNoKotoСначала проверьте свой сервер, насколько я могу судить, ваш сервер возвращает пустой массив, даже когда я тестирую его с помощью Postman, так что это не имеет ничего общего с вашим кодом Arduino. Это ваш php-код, который неправильно обрабатывает запрос POST., @hcheung
@hcheung при тестировании с почтальоном все работает и возвращает данные из $_POST. Я думаю, вы плохо его протестировали. В php файле есть var_dump($_POST) а значит и результирующий массив(0){}, @wgerro
@TisteAndii Я уже отредактировал пост., @wgerro
на сервере php показывает, что не получает CONTENT-TYPE и CONTENT-LENGTH от arduino, @wgerro
Удачи, если вы говорите, что можете получить правильный результат Postman, а я даже не могу его правильно проверить. Если мой тест Postman даст тот же результат, что и ваш код Arduino, о чем это вам говорит?, @hcheung
@hcheung, возможно, вы не включили метод POST, @wgerro
Поверьте мне, я использую Postman ежедневно..., @hcheung
@hcheung, однако, вы были правы, это было неправильно в файле php, вместо $ _POST вам пришлось использовать file_get_contents("php://input") !, @wgerro