从我的ESP8266发布到REST API

时间:2018-06-15 23:11:19

标签: api post arduino esp8266

我已经创建了一个REST API,我想向ESP8266的一个端点发送一个帖子请求,但我无法这样做。

到目前为止循环中的代码:

HTTPClient http;    //Declare object of class HTTPClient



http.begin("http://localhost:5000/api/users/5b1e82fb8c620238a85646fc/arduinos/5b243dc666c18a2e10eb4097/data");
   http.addHeader("Content-Type", "text/plain");
   http.addHeader("Authorization", "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjViMWU4MmZiOGM2MjAyMzhhODU2NDZmYyIsImlhdCI6MTUyOTEwMTc5MiwiZXhwIjoxNTI5MTE2MTkyfQ.2O6knqriuFoEW9C2JQKRlM3D0DNnzqC7e7gpidy3pWU");
http.end(); 

问题在于我不知道如何设置请求的正文。

它应该是一个带有一个名为“value”的键的json。例如:

{
"value":101
}

任何人都知道怎么做?还有可能我应该使用ip而不是“localhost”。

提前致谢。

1 个答案:

答案 0 :(得分:1)

使用ArduinoJson资讯库here。然后,您可以构建您的HTTP正文。

  StaticJsonBuffer<300> JSONbuffer;   //Declaring static JSON buffer
  JsonObject& JSONencoder = JSONbuffer.createObject();

  JSONencoder["value"] = value_var;
  char JSONmessageBuffer[300];
  JSONencoder.prettyPrintTo(JSONmessageBuffer, sizeof(JSONmessageBuffer));

  HTTPClient http;    //Declare object of class HTTPClient

  http.begin("API end point here");      //Specify request destination
  http.addHeader("Content-Type", "application/json");  //Specify content-type header

  int httpCode = http.POST(JSONmessageBuffer);   //Send the request
  String payload = http.getString();                  //Get the response payload

然后使用上面的示例代码封装JSON并将其发送到API端点。