对于一个学校项目,我正在建造一个小型的Arduino气象站。该站将其数据发送到PHP页面(使用CC3000),该页面将其放入MySQL数据库。我几天前工作的代码,现在不知何故停止了工作。 问题是我从我的服务器收到400错误请求。我使用的代码如下
while (!client.connected()){
Connect();
}
client.fastrprint(F(" GET "));
client.fastrprint(PAGE);
client.fastrprint(F("?sensor="));
client.fastrprint(sensor);
client.fastrprint(F("&&unit="));
client.fastrprint(unit);
client.fastrprint(F("&&value="));
client.fastrprint(charBuffer);
client.fastrprint(F("&&pass="));
client.fastrprint(F(" HTTP/1.1\r\n"));
client.fastrprint(F("Host: "));
client.fastrprint(SERVER);
client.fastrprint(F(":80\r\n"));
client.fastrprint(F("\r\n"));
client.println();
现在大部分代码来自adafruit的示例函数。奇怪的是,当我使用telnet发送相同的请求时,我也收到了一个HTTP 400错误请求。但是当我使用浏览器请求URL时,PHP页面接受数据并将其放入我的数据库。 这是我在telnet中使用的命令。
GET /weer/add.php?sensor=DHT&&unit=C&&value=99.99&&pass= HTTP:/1.1
Host:www.---.nl
有人能帮我弄清楚我的请求有什么问题吗?
如果有帮助,服务器会运行nginx 1.7.0
答案 0 :(得分:0)
因此,我更改了代码,以便它使用格式字符串的缓冲区来编译字符串。然后使用client.println发送此缓冲区。最后,我仍然向我的服务器发送完全相同的消息,但现在它可以正常工作。我猜客户端.fastrprint搞砸了。
String buffer = "GET ";
buffer += PAGE;
buffer += "?sensor=";
buffer += sensor;
buffer += "&&unit=";
buffer += unit;
buffer += "&&value=";
buffer += charBuffer;
buffer += "&&pass=";
buffer += " HTTP/1.1\r\n";
buffer += "Host: ";
buffer += SERVER;
buffer += ":80\r\n\r\n";
while (!client.connected()){
Connect();
}
client.println(buffer);