无法将Arduino的HTTP GET请求发送到Raspberry Pi

时间:2019-04-14 20:30:39

标签: php arduino raspberry-pi3

我正在Raspberry Pi3上运行Incredible PBX。我有一个Arduino MEGA,它向Raspberry Pi发送HTTP GET请求。 Arduino发送三个变量ext,calleerid和room,并在Raspberry Pi上调用PHP文件以将值写入MySql。我可以在Raspberry Pi上的Apache2访问日志文件中看到GET请求,但是PHP文件没有运行。感谢任何建议。

我以前曾在Raspberry Pi模型A上进行过此工作,但是现在我正在使用较新的版本,因此我无法弄清为什么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,like 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 :(得分:0)

首先,您以错误的方式使用了REST体系结构。实际上,您使用GET而不是POST类型的请求来插入新数据。

但是,我没有尝试过您的代码,但是问题可能是&&而不是单&。

此外,您必须使用error_log($ variable_name)调试PHP代码,以查看是否从GET正确接收了值。

提示:使用REST调用时,请尝试使用POSTMAN软件模拟REST CALL并查看响应