首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Arduino http请求

Arduino http请求
EN

Stack Overflow用户
提问于 2014-03-28 06:17:21
回答 1查看 497关注 0票数 0

我将数据发送到and服务器,and服务器将数据存储在mysql数据库中。如何将stuff (ok)变量返回给arduino并进行串行打印(#stuff)?

代码语言:javascript
复制
  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文件:

代码语言:javascript
复制
$stuff = "";
include("conec.php");
if ($_GET["value"]) {
$link=Conection();
$Sql="insert into table (VALUE) values ('".($_GET["value"])."')"; 
mysql_query($Sql,$link);
$stuff = ok;
}
EN

回答 1

Stack Overflow用户

发布于 2014-03-28 06:42:29

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

在没有任何测试的情况下,代码将会是这样的:

代码语言:javascript
复制
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();

这将取代:

代码语言:javascript
复制
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查询字符串的攻击。考虑使用函数mysqli_real_escape_string()函数来保护您自己。

您也没有将$stuff赋值给字符串。请务必将ok放在引号中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22700411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档