2013-09-28 50 views
2

我正在制作一个Web应用程序来托管从Arduino发布的JSON数据进行散列并存储在数据库中。Arduino POST ERROR不好请求行`'

我对从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(""); 
} 

我使用红宝石西纳特拉的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> 

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

+0

你不需要最后一个client.println(“”)。不知道这是否足以导致你所看到的错误。 – knolleary

+0

这确实摆脱了一些疯狂的HTTP响应字符,但它仍然给出错误。我会在原始文章中添加HTTP响应。谢谢! – pdago

回答

2

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

如果删除最后一个client.println("");因为不需要它,并增加Content-Length到16或17(取决于什么换行字符println增加),那么它的工作原理。

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