2

我正在制作一个 Web 应用程序来托管从 Arduino 发布的 JSON 数据,以进行散列并存储在数据库中。

我遇到了从 Arduino 向 Web 应用程序发送的 POST 请求的问题,但我无法解决这个问题。

收到的错误:

[28/Sep/2013:15:43:01 CDT] "POST /json HTTP/1.1" 200 0
- -> /json

[2013-09-28 15:43:06] ERROR bad Request-Line `'.

[28/Sep/2013:15:43:06 CDT] "" 400 0

阿杜诺邮报:

if (client.connect(server, 4567)) {
 Serial.println("connected");
 // Make a HTTP request:
 client.println("POST /json HTTP/1.1");
 client.println("User-Agent: Arduino");
 client.println("Host: localhost:4567");
 client.print("Accept: *"); client.print("/"); client.println("*");
 client.println("Content-Length: 15");
 client.println("Content-Type: application/x-www-form-urlencoded");
 client.println("");
 client.println("{\"plot\":\"85.1\"}");
 client.println("");
} 

我正在将 Ruby 与 Sinatra 一起用于 Web 应用程序。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
 <HEAD><TITLE>Bad Request</TITLE></HEAD>
 <BODY>
 <H1>Bad Request</H1>
 bad Request-Line `'.
 <HR>
 <ADDRESS>
 WEBrick/1.3.1 (Ruby/1.9.3/2013-06-27) at
 localhost:4567
 </ADDRESS>
 </BODY>
</HTML>

任何帮助将不胜感激,在此先感谢!

4

1 回答 1

3

这里的问题是Content-Length值错误 - 您发送的数据比这更多。

如果您删除client.println("");不需要的最后一个,并增加到Content-Length16 或 17(取决于换行符println添加的内容),那么它可以工作。

一种更便携的方法是构建要在String对象中发布的数据,然后Content-Length基于其.length().

于 2013-09-28T22:30:44.577 回答