Nodemcu не отвечает на HTTP-запрос GET

Я хочу отправить HTTP-запрос GET с моего nodemcu на локальный сервер. И nodemcu, и мой ноутбук подключены к одной сети Wi-Fi. Хотя 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
}
//=======================================================================

Здесь показан php-код сайта localhost.

<html>
<body>

status: <?php echo $_GET["status"]; ?><br>
station: <?php echo $_GET["station"]; ?>

</body>
</html>

подключение ..... подключено к: **** -1 -1


person jack jill    schedule 17.07.2019    source источник
comment
Я вижу, вы определяете переменную getData, содержащую параметры запроса. Однако я не вижу, чтобы вы действительно где-нибудь использовали эту переменную?   -  person Magnus Eriksson    schedule 17.07.2019
comment
Я использовал его, когда загружал в nodemcu. Пропустил здесь. отредактировал   -  person jack jill    schedule 17.07.2019
comment
Когда вы говорите: на локальный сервер, вы имеете в виду, что ваш локальный веб-сервер также находится на устройстве nodemcu? Если он находится на другом устройстве (например, на вашем ноутбуке), вы не можете использовать localhost, поскольку он относится к самому себе (nodemcu вызывает себя).   -  person Magnus Eriksson    schedule 17.07.2019


Ответы (2)


localhost - это сокращение, означающее «я». Вы говорите NodeMCU отправить запрос самому себе, хотя он, вероятно, даже не понимает localhost. Вам необходимо использовать настоящее имя или IP-адрес компьютера, на который вы пытаетесь отправить запрос. Localhost никогда не будет работать так, как вы пытаетесь его использовать здесь (отправка запроса с одного компьютера на другой).

person romkey    schedule 17.07.2019
comment
127.0.0.1 - это то же самое, что и localhost. 192.168. *** - это наверное то, что вам нужно. - person romkey; 17.07.2019

Попробуйте это:

<?php 

echo "<pre>";
print_r($_REQUEST);

?>
person Kamani Anand    schedule 17.07.2019
comment
пробовал это. еще ничего. всегда получаю -1 в серийном мониторе - person jack jill; 17.07.2019