HTTP GET提供400个错误请求(telnet,arduino)

时间:2014-06-27 12:17:03

标签: http arduino telnet bad-request

对于一个学校项目,我正在建造一个小型的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

1 个答案:

答案 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);