Nodemcu 不响应 http GET 请求
Nodemcu does not respond to http GET request
我想从我的 nodemcu 向本地主机服务器发送 HTTP GET 请求。 nodemcu 和我的笔记本电脑都连接到同一个 Wifi 网络。虽然 nodemcu 连接到网络,但它不发送请求。
我尝试手动发送请求并使用 "postman" 然后它起作用了。所以我认为问题出在 nodemcu 代码或设备上。
欢迎任何想法。
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266HTTPClient.h>
/* Set these to your desired credentials. */
const char *ssid = "******"; //ENTER YOUR WIFI SETTINGS
const char *password = "****";
//Web/Server address to read/write from
//website or IP address of server
//=======================================================================
// Power on setup
//=======================================================================
void setup() {
delay(1000);
Serial.begin(115200);
WiFi.mode(WIFI_OFF); //Prevents reconnection issue (taking too long to connect)
delay(1000);
WiFi.mode(WIFI_STA); //This line hides the viewing of ESP as wifi hotspot
WiFi.begin(ssid, password); //Connect to your WiFi router
Serial.println("");
Serial.print("Connecting");
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
//If connection successful show IP address in serial monitor
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP()); //IP address assigned to your ESP
}
//=======================================================================
// Main Program Loop
//=======================================================================
void loop() {
HTTPClient http; //Declare object of class HTTPClient
String ADCData, station, getData, Link;
int adcvalue=253; //Read Analog value of LDR
ADCData = String(adcvalue); //String to interger conversion
station = "B";
//GET Data
getData = "?status=" + ADCData + "&station=" + station ; //Note "?" //added at front
Link = "http://localhost/welcome.php" + getData;
http.begin(Link); //Specify request destination
int httpCode = http.GET(); //Send the request
String payload = http.getString(); //Get the response payload
Serial.println(httpCode); //Print HTTP return code
Serial.println(payload); //Print request response payload
http.end(); //Close connection
delay(5000); //GET Data at every 5 seconds
}
//=======================================================================
此处显示本地主机站点的 php 代码。
<html>
<body>
status: <?php echo $_GET["status"]; ?><br>
station: <?php echo $_GET["station"]; ?>
</body>
</html>
试试这个:
<?php
echo "<pre>";
print_r($_REQUEST);
?>
localhost 是 shorthand 意思是“自我”。你告诉 NodeMCU 将请求发送给它自己,尽管它可能甚至不理解 localhost。您需要使用您尝试向其发送请求的计算机的实际名称或 IP 地址。 Localhost 永远不会像您在这里尝试使用的那样工作(将请求从一台计算机发送到另一台计算机)。
我想从我的 nodemcu 向本地主机服务器发送 HTTP GET 请求。 nodemcu 和我的笔记本电脑都连接到同一个 Wifi 网络。虽然 nodemcu 连接到网络,但它不发送请求。 我尝试手动发送请求并使用 "postman" 然后它起作用了。所以我认为问题出在 nodemcu 代码或设备上。 欢迎任何想法。
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266HTTPClient.h>
/* Set these to your desired credentials. */
const char *ssid = "******"; //ENTER YOUR WIFI SETTINGS
const char *password = "****";
//Web/Server address to read/write from
//website or IP address of server
//=======================================================================
// Power on setup
//=======================================================================
void setup() {
delay(1000);
Serial.begin(115200);
WiFi.mode(WIFI_OFF); //Prevents reconnection issue (taking too long to connect)
delay(1000);
WiFi.mode(WIFI_STA); //This line hides the viewing of ESP as wifi hotspot
WiFi.begin(ssid, password); //Connect to your WiFi router
Serial.println("");
Serial.print("Connecting");
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
//If connection successful show IP address in serial monitor
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP()); //IP address assigned to your ESP
}
//=======================================================================
// Main Program Loop
//=======================================================================
void loop() {
HTTPClient http; //Declare object of class HTTPClient
String ADCData, station, getData, Link;
int adcvalue=253; //Read Analog value of LDR
ADCData = String(adcvalue); //String to interger conversion
station = "B";
//GET Data
getData = "?status=" + ADCData + "&station=" + station ; //Note "?" //added at front
Link = "http://localhost/welcome.php" + getData;
http.begin(Link); //Specify request destination
int httpCode = http.GET(); //Send the request
String payload = http.getString(); //Get the response payload
Serial.println(httpCode); //Print HTTP return code
Serial.println(payload); //Print request response payload
http.end(); //Close connection
delay(5000); //GET Data at every 5 seconds
}
//=======================================================================
此处显示本地主机站点的 php 代码。
<html>
<body>
status: <?php echo $_GET["status"]; ?><br>
station: <?php echo $_GET["station"]; ?>
</body>
</html>
试试这个:
<?php
echo "<pre>";
print_r($_REQUEST);
?>
localhost 是 shorthand 意思是“自我”。你告诉 NodeMCU 将请求发送给它自己,尽管它可能甚至不理解 localhost。您需要使用您尝试向其发送请求的计算机的实际名称或 IP 地址。 Localhost 永远不会像您在这里尝试使用的那样工作(将请求从一台计算机发送到另一台计算机)。