如何解决ESP8266在Django Webapp中的POST请求上返回代码400
我将Django Web应用程序部署到了Internet,但是我无法POST请求数据,因为它正在返回
HTTP CODE 400,
const char* serverName = "https://example.com/api/v1/post_sample";
=返回400个代码。
但是当我这样做时:const char* serverName = "http://localhost:8000/api/v1/post_sample";
可以工作并返回201代码。
它目前未在Web应用程序上施加任何限制或身份验证。我什至在Postman上向部署的Web应用程序发出了POST请求,该请求也有效。
请帮助。谢谢!
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClient.h>
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";
const char* serverName = "https://example.com/api/v1/post_sample";
unsigned long lastTime = 0;
unsigned long timerDelay = 5000;
void setup() {
Serial.begin(115200);
WiFi.begin(ssid,password);
Serial.println("Connecting");
while(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to WiFi network with IP Address: ");
Serial.println(WiFi.localIP());
Serial.println("Timer set to 5 seconds (timerDelay variable),it will take 5 seconds before publishing the first reading.");
}
void loop() {
if ((millis() - lastTime) > timerDelay) {
//Check WiFi connection status
if(WiFi.status()== WL_CONNECTED){
HTTPClient http;
http.begin(serverName);
http.addHeader("Content-Type","application/json");
int httpResponseCode = http.POST("{\"value\":\"1\"}");
Serial.print("HTTP Response code: ");
Serial.println(httpResponseCode);
http.end();
}
else {
Serial.println("WiFi Disconnected");
}
lastTime = millis();
}
}
解决方法
-
在尝试建立http连接之前,您没有建立
WiFiClient
。 -
对于使用
ESP8266HTTPClient
的POST请求,当您使用已建立的客户端实例建立http.begin(client,url)
时,您将传入URL。请参见example代码。您的情况应该是:if(WiFi.status()== WL_CONNECTED){ WiFiClient client; HTTPClient http; http.begin(client,serverName); http.addHeader("Content-Type","application/json"); int httpResponseCode = http.POST("{\"value\":\"1\"}"); Serial.print("HTTP Response code: "); Serial.println(httpResponseCode); http.end(); } else { Serial.println("WiFi Disconnected"); }
-
如果您的网址是与示例网址中所示的与
https
的安全连接,那么您将需要使用<WiFiClientSecureBearSSL.h>
之类的库来建立安全客户端。参见example。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。