2016-12-28 179 views
1

我有一个ESP8266,我正在编程在Arduino中。我需要做一个POST请求。我试过这段代码:ESP8266和POST请求

#include <ESP8266HTTPClient.h> 
#include <ESP8266WiFi.h> 

void setup() { 

    Serial.begin(115200);         //Serial connection 
    WiFi.begin("ssid", "wifi_password"); //WiFi connection 

    while (WiFi.status() != WL_CONNECTED) { //Wait for the WiFI connection completion 

    delay(500); 
    Serial.println("Waiting for connection"); 

    } 
} 

void loop() { 

    if(WiFi.status()== WL_CONNECTED){ //Check WiFi connection status 

    HTTPClient http; //Declare object of class HTTPClient 

    http.begin("server_name");  //Specify request destination 
    http.header("POST/HTTP/1.1"); 
    http.header("Host: server_name"); 
    http.header("Accept: */*"); 
    http.header("Content-Type: application/x-www-form-urlencoded"); 
    int httpCode = http.POST("Message from ESP8266"); //Send the request 
    String payload = http.getString();           
    Serial.println(httpCode); //Print HTTP return code 
    Serial.println(payload); //Print request response payload 
    http.end(); //Close connection 

    }else{ 

    Serial.println("Error in WiFi connection"); 

    } 

    delay(5000); //Send a request every 30 seconds 

} 

但是在网页上我没有收到任何回应。

+0

“但在网页上我没有收到任何回应” - 什么网页?为什么回复会在**网页上显示**? – Quentin

+0

'http.header(“Content-Type:application/x-www-form-urlencoded”); '和'http.POST(“来自ESP8266的消息”);' - 那些不匹配。 – Quentin

+0

在网页上是mysql数据库。什么是正确的? – Matej

回答

2

我发现这个代码,它的工作原理!

#include <ESP8266WiFi.h> 
const char* ssid  = "ssid"; 
const char* password = "password"; 

const char* host = "server_name"; 

void setup() { 
    Serial.begin(115200); 
    delay(100); 

    // We start by connecting to a WiFi network 
    Serial.println(); 
    Serial.println(); 
    Serial.print("Connecting to "); 
    Serial.println(ssid); 

    WiFi.begin(ssid, password); 

while (WiFi.status() != WL_CONNECTED) { 
    delay(500); 
    Serial.print("."); 
    } 

    Serial.println(""); 
    Serial.println("WiFi connected"); 
    Serial.println("IP address: "); 
    Serial.println(WiFi.localIP()); 
} 

void loop() { 

    WiFiClient client; 
    const int httpPort = 80; 
    if (!client.connect(host, httpPort)) { 
    Serial.println("connection failed"); 
    return; 
    } 


String data = "pst=temperature>" + String(random(0,100)) +"||humidity>" + String(random(0,100)) + "||data>text"; 

    Serial.print("Requesting POST: "); 
    // Send request to the server: 
    client.println("POST/HTTP/1.1"); 
    client.println("Host: server_name"); 
    client.println("Accept: */*"); 
    client.println("Content-Type: application/x-www-form-urlencoded"); 
    client.print("Content-Length: "); 
    client.println(data.length()); 
    client.println(); 
    client.print(data); 

    delay(500); // Can be changed 
    if (client.connected()) { 
    client.stop(); // DISCONNECT FROM THE SERVER 
    } 
    Serial.println(); 
    Serial.println("closing connection"); 
    delay(5000); 
} 

非常感谢您的帮助。