Невозможно опубликовать данные на веб-сервере, используя GPRS GSM A6 и Arduino

Я уже некоторое время пытаюсь отправить данные на сервер. Несмотря на то, что я получаю хороший ответ, данные не отправляются на сервер.

Вот мой код:

#include <SoftwareSerial.h>
SoftwareSerial myGsm(7,8);

void setup() {
myGsm.begin(115200);
Serial.begin(9600);
delay(500);
myGsm.println("AT+CIPSHUT\r"); //RESPONSE= OK
delay(1000);
myGsm.println("AT+CIPMUX=0\r"); //RESPONSE= OK
delay(2000);
myGsm.println("AT+CGATT=1\r"); //RESPONSE= OK
delay(1000);
myGsm.println("AT+CSTT=\"internet\",\"\",\"\"\r"); //RESPONSE= OK
delay(5000);
myGsm.println("AT+CIICR\r"); //RESPONSE= OK
delay(5000);
myGsm.println("AT+CIFSR\r"); //RESPONSE= Returns an IP
delay(2000);
myGsm.println("AT+CIPSTART=\"TCP\",\"159.203.180.107\", 80\r") //RESPONSE= CONNECTED OK
delay(3000);
myGsm.println("AT+CIPSEND\r"); //RESPONSE= >
delay(500);
myGsm.println("POST http://159.203.180.107/Code/ HTTP/1.1");
delay(500);
myGsm.println("Host: 159.203.180.107");
delay(500);
myGsm.println("Content-Type: application/json");
delay(500);
myGsm.println("Content-Length: 25\r\n");
delay(500);
myGsm.println("{\"Celsius\":\"TEMPERATURE\"}");
delay(500);
myGsm.write(0x1A); // Ctrl Z
delay(10000);
/*
After sending all these instructions, I get the following response,
OK
HTTP/1.1 200 OK
Friday December, 22
+TCPCLOSE=0
OK
*/
myGsm.println("AT+CIPCLOSE"); //RESPONSE= OK
delay(1000);
myGsm.println("AT+CIPSHUT"); //RESPONSE= OK
delay(1000);
}

void loop() {
}

Итак, как вы можете видеть, я получаю 200 OK ответ после отправки данных, но данные не записываются в файл на сервере. Существующее содержимое файла удаляется, но новые данные не записываются в этот файл.

Вот мой PHP-файл на сервере:

<?php
echo "<pre>";
print_r($_REQUEST);
file_put_contents("data.txt", $_REQUEST);
die("<br>DONE!");
?>

Итак, в чем может быть проблема здесь? Что-то не так с файлом PHP на сервере? Пожалуйста помоги. Я также разместил этот же вопрос в одном из сообществ Arduino, но это не помогло.

0

Решение

PHP не анализирует автоматически JSON.

Вы должны либо опубликовать его как application/x-www-form-urlencoded, который выглядит как

Celsius=TEMPERATURE

или проанализируйте полезную нагрузку POST самостоятельно

$data = json_decode(file_get_contents('php://input'), true);
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]