Arduino http request

Arduino http request

本文关键字:request http Arduino      更新时间:2023-10-16

我正在发送数据到web服务器,并且web服务器存储在mysql数据库中。我如何返回的东西(ok)变量arduino和使串行打印(#stuff)?

  String request = "GET "+ repository + "sensor.php?value=" + value + " HTTP/1.0";
  send_request(request);
  void send_request (String request) {
  Adafruit_CC3000_Client client = cc3000.connectTCP(ip, port);
  if (client.connected()) {
    client.println(request);      
    client.println(F(""));
    Serial.println("Connected & Data sent");
  } 
  else {
    Serial.println(F("Connection failed"));
  }
  char c = client.read();
  while (client.connected()) {
    while (client.available()) {
     char c = client.read();
    }
  }
  Serial.println("Closing connection");
  client.close();
}
PHP文件:

$stuff = "";
include("conec.php");
if ($_GET["value"]) {
$link=Conection();
$Sql="insert into table (VALUE) values ('".($_GET["value"])."')"; 
mysql_query($Sql,$link);
$stuff = ok;
}

我不知道arduino,但我的猜测是client.read();从响应中读取字符。现在你正在读取变量c,只是覆盖变量,直到你读取整个响应。尝试创建一个字符串缓冲区,并将字符读入字符串。一旦完成,尝试打印出您的缓冲区。

如果没有任何测试,代码将沿着以下行:

string buffer;
int counter = 0;
while (client.connected()) {
  while (client.available()) {
   buffer[counter++] = client.read();
  }
}
Serial.println("Closing connection");
Serial.println("Buffer value is: " + buffer);
client.close();

将取代:

char c = client.read();
while (client.connected()) {
  while (client.available()) {
   char c = client.read();
  }
}
Serial.println("Closing connection");
client.close();

您还必须在PHP文件中放入echo $stuff,以便响应传入的请求。

编辑

你还有更多的问题。mysql库已被弃用,我建议查看mysqli php库。您还容易受到$_GET["value"]直接将SQL注入到SQL查询字符串中的攻击。考虑使用function mysqli_real_escape_string()函数来保护自己。

您也没有将$stuff分配给字符串。一定要把ok加引号