2017-09-12 1 views
0

본문이 POST 인 C (Arduino -> Energia)를 보내야하지만 요청이 내려 지지만 본문이 전송되지 않습니다.C에서 Arduino로 본문으로 HTTP POST 요청 보내기

POST/온도 ... HTTP/1.1

호스트 서버로 데이터를 전송

: 192.168.0.102

콘텐츠 길이 여기

콘솔 피드백이다 : 13

{값 : '30 '}

,451,515,

응답 코드 : 200 HTTP/1.1 200 OK

X-전원이 작성자 :

콘텐츠 형식 익스프레스 : 응용 프로그램/JSON을; 문자셋 = UTF-8

콘텐츠 길이 : 28 의 ETag : W/"1C-hvJwdxMoDderI2R105RV5ae/KRI"

날짜 : 2017년 9월 12일 (화) 그리니치 표준시 11시 04분 22초

연결 : 계속 -alive

{ "정보는"여기

END

하고는 "온도가 추가" C (아두 이노 -> 에네르기)의 코드 :

if (client.connect(server, 3000)) { 

String request = String("POST ") + (String)END_POINT + " HTTP/1.1\r\n" + 
       "Host: " + server + "\r\n" + 
       "Content-Length: " + dataToSend.length() + "\n\n" + 
       dataToSend; 
client.print(request); 
Serial.println(request); 

String response = ""; 
while (client.connected()) {  
    response += client.readStringUntil('}'); 
} 
Serial.println(); 
Serial.print("Response code: "); 
Serial.println(response.substring(9, 12)); 
Serial.println(response); 
Serial.println("END"); 
} 

및 JSON은 같다 그래서

{ 
_id: "59b7b5169f699306290cacd2", 
timestamp: "2017-09-12T10:21:10.538Z", 
__v: 0 
}, 

{값 '30'}

이 없습니다.

+0

에 다음 줄

"Content-Length: " + dataToSend.length() + "\n\n" + 

을 변경해야합니까? – Billa

+0

'dataToSend'는 문자열입니까? 어떻게 초기화됩니까? – Lundin

+1

빠른 답변을 얻기 위해 어떤 상황에서 "긴급한"또는 다른 유사한 문구를 내 질문에 추가 할 수 있습니까?] (// meta.stackoverflow.com/q/326569) - 요약은 이것이 자원 봉사자를 대하는 이상적인 방법이며, 아마도 답을 얻는 데 비생산적입니다. 이 질문을 귀하의 질문에 추가하지 마십시오. – halfer

답변

0

각 헤더 행 뒤에는 캐리지 리턴과 줄 바꿈 문자가 있어야합니다.
그리고 헤더와 본문 사이에 빈 줄이 필요합니다.

당신은 당신의 몸을 의미합니까 무엇

"Content-Length: " + dataToSend.length() + "\r\n\r\n" +