Arduino http请求

Arduino http请求

问题描述:

我正在发送数据到网络服务器,并且网络服务器存储在mysql数据库中。我如何将东西(ok)变量返回给arduino并进行串行打印(#stuff)?Arduino http请求

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; 
} 
+0

你只是想看看输出到请求? 'echo $ stuff;' – Adam

+0

我想使用我发送的$ stuff变量在arduino中进行一次串行打印。 – milhas

我不知道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(); 

也将不得不把一个echo $stuff在你的PHP文件,以响应到传入的请求。

编辑

你也有一对夫妇更多的问题。 mysql库已被弃用,我建议您查看mysqli php库。您还易受到$_GET["value"]直接插入SQL查询字符串的SQL注入攻击。看看使用函数mysqli_real_escape_string()函数为了保护自己。

您也不会将$stuff分配给字符串。一定要把ok放在引号中。

+0

不工作,逻辑看起来不错,但没有显示任何内容:缓冲区值为: – milhas

+0

将浏览器导航到运行PHP文件的服务器,它应打印出您要查找的值。还要看看你在什么地方定义'$ stuff',确保通过在引号中加上'“ok”'来把它分配给一个字符串。另外,在你的PHP文件中,你会使用mysql_real_escape_string()函数让自己容易受到SQL注入的影响。 mysql库也被弃用,请使用mysqli来代替。 – Adam

+0

我已经试过用这个“”或“',我可以看到这个$ stuff打印,但是arduino无法读取这个值,我不知道为什么。 Tnk你为sql符号,但我会在第二步解决这个问题,因为现在不是我的优先权。 – milhas