php - Nodemcu 不响应 http GET 请求
问题描述
我想从我的 nodemcu 向 localhost 服务器发送一个 HTTP GET 请求。nodemcu 和我的笔记本电脑都连接到同一个 Wifi 网络。虽然 nodemcu 连接到网络,但它不会发送请求。我尝试手动发送请求并使用“邮递员”,然后它就可以工作了。所以我认为问题出在 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
}
//=======================================================================
localhost 站点的 php 代码如下所示。
<html>
<body>
status: <?php echo $_GET["status"]; ?><br>
station: <?php echo $_GET["station"]; ?>
</body>
</html>
解决方案
localhost 是“自我”的简写。您是在告诉 NodeMCU 将请求发送给它自己,尽管它可能甚至不理解 localhost。您需要使用您尝试向其发送请求的计算机的实际名称或 IP 地址。本地主机永远不会像您在这里尝试使用它的方式工作(将请求从一台计算机发送到另一台计算机)。
推荐阅读
- corda - Corda InitiatingFlow 线程安全吗?
- python - 在 python 的引擎盖下解码
- spring-boot - 如何在 Spring Boot 中构建的 swagger 页面中添加文本框/文本字段?
- java - 在 intelij 中将 jar 依赖项添加到暂存文件的简单方法
- c# - 未复制引用的项目依赖项 DLL
- c++ - 反转输入,输出字符串意外为空
- java - 使用 kafka avro 序列化的 Spark 流式传输
- nativescript - 获取元素当前位置?
- java - while 循环冻结了我的 Windows UI 而不是窗口被挂起
- maven - UnsatisfiedDependencyException by Maven Packed war 但不是 Intellij IDE 为什么?