Проблемы с отправкой HTTP-запроса GET от Arduino к Raspberry Pi - PullRequest
0 голосов
/ 14 апреля 2019

Я использую невероятную АТС на Raspberry Pi3. У меня есть MEGA Arduino, которая отправляет HTTP-запрос GET на Raspberry Pi. Arduino отправляет три переменные, ext, calleerid и room и вызывает файл PHP на Raspberry Pi для записи значений в MySql. Я вижу запрос GET в файле журнала доступа Apache2 на Raspberry Pi, но файл PHP не запускается. Ценю любые предложения.

Ранее у меня это работало на модели R Raspberry Pi, но теперь, когда я использую более новую версию, я не могу понять, почему файл PHP не загружается и не записывает значения в базу данных.

Код Arduino -

if (client.connect(server, 80)) {
    Serial.println("-> Connected and sending HTTP Request");
    // Make a HTTP request:
    client.print( "GET /add_data.php?"); //THIS SHOULD BE add_data.php
    client.print("ext=");
    client.print( extn );

    client.print("&&");
    client.print("room=");
    client.print( room );

    client.print("&&");
    client.print("callerid=");
    client.print( callerId2 );

    client.println( " HTTP/1.1");
    client.print( "Host: " );
    client.println(server);
    client.println( "Content-Type: application/x-www-form-urlencoded" );     
    client.println( "Connection: close" );
    client.println();
    client.println();
    client.stop();
    //Serial.print ("Room = " + room);

    Serial.println ("HTTP Request proceesed and sent!");
    Serial.println ("Database queries in process");
   }
   else {
    // you didn't get a connection to the server:
    Serial.println("--> connection failed/n");
   }

PHP-код -

`

// Prepare the SQL statement
$SQL = "INSERT INTO test.newdata (ext ,callerid ,room) VALUES ('".$_GET["ext"]."','".$_GET ["callerid"]."','".$_GET["room"]."')";   
$SQL1 = "INSERT INTO test.room (room) VALUES ('".$_GET["room"]."')";              

// Execute SQL statement
mysql_query($SQL);
mysql_query($SQL1);
include("select_room.php");


// Go to the review_data.php (optional)
header("Location: Site_2/review_data.php");
?>` 

В файле журнала доступа Apache2 отображается запрос GET -

xxxx - - [13 / Apr / 2019: 22: 50: 29 -0400] "GET /Site_2/review_data.php HTTP / 1.1" 200 1538 "http://x.x.x.x/Site_2/review_data.php"" Mozilla / 5.0 (Windows NT 10.0 ; Win64; x64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 64.0.3282.140 Safari / 537.36 Edge / 17.17134 " x.x.x.x - - [13 / Apr / 2019: 22: 50: 52 -0400] "GET /add_data.php?ext=5000&&room=110&&callerid=110+Config+Test" 400 0 "-" "-" 10.1.11.200 - - [13 / Apr / 2019: 22: 51: 14 -0400] "GET /Site_2/review_data.php HTTP / 1.1" 200 1538 "http://192.168.50.123/Site_2/review_data.php"" Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 64.0.3282.140 Safari / 537.36 Edge / 17.17134 "

1 Ответ

0 голосов
/ 14 апреля 2019

Прежде всего, вы неправильно используете архитектуру REST.На самом деле вы используете GET для вставки новых данных вместо запроса типа POST.

Однако я не пробовал ваш код, но проблема может быть в двойном && вместо одиночного &.

Более того, вы должны отладить свой PHP-код с помощью error_log ($ variable_name), чтобы увидеть,вы получаете значения из GET правильно.

Совет: при работе с вызовами REST попробуйте использовать программное обеспечение POSTMAN для имитации вызова REST и увидеть ответ

...