2013-09-28 2 views
2

Arduino에서 게시 된 JSON 데이터를 호스팅하는 웹 응용 프로그램을 만들어 데이터베이스에 해시되고 저장됩니다.Arduino POST ERROR bad Request-Line ''

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 

아두 이노 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(""); 
} 

을 나는 웹 앱시나와 루비를 사용하고 있습니다.

<!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("");을 제거하고, 16 또는 17 중 하나에 Content-Length을 늘리면

는 작동 ( println가 추가 개행 어떤 문자에 따라 다름).

게시하려는 데이터를 String 개체에 작성한 다음 .length()을 기준으로 Content-Length을 설정하면 더 편리합니다.