Arduino POST ERROR错误请求行''

时间:2013-09-28 21:34:40

标签: ruby json sinatra arduino http-post

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

我对从Arduino发送的网络应用程序的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

Arduino POST:

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作为网络应用程序。

<!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>

非常感谢任何帮助,提前谢谢!

1 个答案:

答案 0 :(得分:2)

此处的问题是Content-Length值错误 - 您发送的数据多于此数据。

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

更便携的方法是构建要在String对象中发布的数据,然后根据Content-Length设置.length()