I want to send an HTTP GET request from my nodemcu to a localhost server. Both the nodemcu and my laptop are connected to the same Wifi network. Though nodemcu connects to the network, it does not send the request. I tried sending the request manually and using "postman" and then it works. So I think the problem is with nodemcu code or something with device. Any idea is welcome.
#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
}
//=======================================================================
The php code of localhost site is shown here.
<html>
<body>
status: <?php echo $_GET["status"]; ?><br>
station: <?php echo $_GET["station"]; ?>
</body>
</html>
localhost is a shorthand meaning “self”. You're telling the NodeMCU to send the request to itself, though it probably doesn't even understand localhost. You need to use the actual name or IP address of the computer you're trying to send the request to. Localhost will never work the way you're trying to use it here (sending a request from one computer to another).
Try To This :
<?php
echo "<pre>";
print_r($_REQUEST);
?>
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.