Http ESP8266成功发布,数据库接收条目,但数据为空

Http ESP8266成功发布,数据库接收条目,但数据为空,http,post,arduino,esp8266,Http,Post,Arduino,Esp8266,我正在使用ESP8266HTTPClient库将数据发布到我的数据库。虽然没有错误,但我的服务器已成功响应。当我检查我的数据库时,它收到一个条目,但是它是空的 我已经用Postman测试了我的API,它完全可以工作 代码: 摘要:尽管成功地连接和输入了数据库,但PostData中包含的数据没有更新到数据库中。好的,所以我设法解决了这个问题。我使用MongoDB和Express框架创建web应用程序。问题是我使用了req.query.foo来解析POST请求 要使用的正确命令是req.body.f

我正在使用ESP8266HTTPClient库将数据发布到我的数据库。虽然没有错误,但我的服务器已成功响应。当我检查我的数据库时,它收到一个条目,但是它是空的

我已经用Postman测试了我的API,它完全可以工作

代码:


摘要:尽管成功地连接和输入了数据库,但PostData中包含的数据没有更新到数据库中。

好的,所以我设法解决了这个问题。我使用MongoDB和Express框架创建web应用程序。问题是我使用了req.query.foo来解析POST请求


要使用的正确命令是req.body.foo。感谢大家的回复。

您如何在服务器端处理请求?我使用MongoDB作为数据库,并使用Express with node框架处理请求。从我所看到的情况来看,esp2866端没有任何问题。对我来说,问题出在服务器端,但我不是MongoDB方面的专家。但是我已经用Postman tho测试了我的服务器。它工作正常:/那么您的postData可能有问题,您确定所有内容都写得很好吗?
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>

const char* ssid = "foo";
const char* password = "bar";
const char* host ="http://foo.com/";
const char* fullHost ="http://foo.com/api/update";
String PostData = "employeeID=1002&lotNumber=3&lotSize=XS&lotQuantity=46&jobSheetNumber=9&processId=200&timeTaken=30";


void setup() {

  Serial.begin(115200); 
  delay(10);

// Standard code to connect to Wifi using <ESP8266WiFi.h> library.

}

void loop() {

  Serial.print("\nConnecting to server: ");
  Serial.println(host);

  HTTPClient http;
  http.begin(fullHost);
  http.addHeader("Content-Type", "application/x-www-form-urlencoded");

  int httpCode = http.POST(PostData);
  String payload = http.getString();                 
  Serial.println(httpCode);   //Print HTTP return code
  Serial.println(payload); 
  http.end();

  delay(5000);
}
"Connecting to server: http://foo.com/"

"200"

"DATABASE UPDATE SUCCESSFUL"