在C Arduino中使用body发送HTTP POST请求

时间:2017-09-12 11:15:47

标签: c++ arduino http-post

我必须在C(Arduino - > Energia)发送一个带有正文的POST,然后发出请求但是没有发送正文。

以下是控制台反馈:

  

将数据发送到服务器......

     

POST / temperature HTTP / 1.1

     

主持人:192.168.0.102

     

内容长度:13

     

{值:'30'}

     

回复代码:200   HTTP / 1.1 200确定

     

X-Powered-By:Express

     

内容类型:   应用/ JSON;字符集= UTF-8

     

内容长度:28   ETag:W /“1c-hvJwdxMoDderI2R105RV5ae / krI”

     

日期:2017年9月12日星期二,格林威治标准时间11:04:22

     

连接:保持活力

     

{“info”:“添加温度”

     

END

这是C中的代码(Arduino - > Energia):

  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'}

无处可去。

1 个答案:

答案 0 :(得分:0)

在每个标题行之后,必须有一个回车符和一个换行符 标题和正文之间需要一个空行。

您需要更改以下行

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

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