我正在制作一个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>
非常感谢任何帮助,提前谢谢!
答案 0 :(得分:2)
此处的问题是Content-Length
值错误 - 您发送的数据多于此数据。
如果您删除了不需要的最后一个client.println("");
,并将Content-Length
增加到16或17(取决于换行符println
添加的内容),那么它可以正常工作。< / p>
更便携的方法是构建要在String
对象中发布的数据,然后根据Content-Length
设置.length()
。