Доброго времени суток. Пробую разобраться с http запросами. Вроде как есть базовый пример для ESP8266, а именно: ESP8266HTTPClient/PostHTTPClient
Там есть строки:
//#define SERVER_IP "10.0.1.7:9080" // PC address with emulation on host
#define SERVER_IP "192.168.1.42"
и потом, вроде как указание куда должен отправляться запрос:
// configure traged server and url
http.begin(client, "http://" SERVER_IP "/postplain/"); //HTTP
http.addHeader("Content-Type", "application/json");
Serial.print("[HTTP] POST...\n");
// start connection and send HTTP header and body
int httpCode = http.POST("{\"hello\":\"world\"}");
Пробовал подставить адрес платы, адрес хоста, и адрес, указанный в примере, и адреса в инете, но все равно в порту пишет:
Никаких особых настроек. Подключаюсь и подсматриваю (вернее уже знаю из опыта, какой адрес дает мой роутер для платы). Этот адрес пингуется. Именно этот адрес использую, когда подставляю адрес платы
Да уж, каждый раз думаю, что выложил максимум кода )))) и каждый раз не хватает ))) Хорошо, вот весь код из базового примера:
Спойлер
/**
PostHTTPClient.ino
Created on: 21.11.2016
*/
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
/* this can be run with an emulated server on host:
cd esp8266-core-root-dir
cd tests/host
make ../../libraries/ESP8266WebServer/examples/PostServer/PostServer
bin/PostServer/PostServer
then put your PC's IP address in SERVER_IP below, port 9080 (instead of default 80):
*/
//#define SERVER_IP "10.0.1.7:9080" // PC address with emulation on host
#define SERVER_IP "192.168.1.42"
#ifndef STASSID
#define STASSID "your-ssid"
#define STAPSK "your-password"
#endif
void setup() {
Serial.begin(115200);
Serial.println();
Serial.println();
Serial.println();
WiFi.begin(STASSID, STAPSK);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected! IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {
// wait for WiFi connection
if ((WiFi.status() == WL_CONNECTED)) {
WiFiClient client;
HTTPClient http;
Serial.print("[HTTP] begin...\n");
// configure traged server and url
http.begin(client, "http://" SERVER_IP "/postplain/"); //HTTP
http.addHeader("Content-Type", "application/json");
Serial.print("[HTTP] POST...\n");
// start connection and send HTTP header and body
int httpCode = http.POST("{\"hello\":\"world\"}");
// httpCode will be negative on error
if (httpCode > 0) {
// HTTP header has been send and Server response header has been handled
Serial.printf("[HTTP] POST... code: %d\n", httpCode);
// file found at server
if (httpCode == HTTP_CODE_OK) {
const String& payload = http.getString();
Serial.println("received payload:\n<<");
Serial.println(payload);
Serial.println(">>");
}
} else {
Serial.printf("[HTTP] POST... failed, error: %s\n", http.errorToString(httpCode).c_str());
}
http.end();
}
delay(10000);
}
предположим, мой роутер выдает адрес 192.168.1.42 Он и прописан в примере. Он пингуется. Подставляю в двух местах:
Строка 19:
Пробовал заходить по адресу: 192.168.1.42/postplain/ и по 192.168.1.42 там ничего не выводит в браузере и пишет ошибку в мониторе порта
Пробовал в строку 19 подставлять адрес хоста, тоесть моего компа 127.0.0.1 Тоже ничего в браузере и в мониторе порта
Пробовал в строку 19 подставить адрес из инета и тоже без результата.
#include <ESP8266WebServer.h> // Библиотека для управления устройством по HTTP (например из браузера)
потом перед сетапом объявил:
ESP8266WebServer serverHTTP(80); // Определяем объект и порт сервера для работы с HTTP
потом в сетапе:
serverHTTP.begin(); // Инициализируем Web-сервер
и в цикле:
serverHTTP.handleClient(); // Обработчик HTTP-событий (отлавливает HTTP-запросы к устройству и обрабатывает их в соответствии с выше описанным алгоритмом)
Теперь в браузере по адресу пишет либо:
Not found: /postplain/ либо Not found: /
В мониторе порта все так же ошибка:
Для этого поднимал xampp и пробовал по адресу localhost и 127.0.0.1 смотреть
Но в целом не очень разбираюсь в этой теме. Но по идее на самой ESP тоже поднимается вэбсервер с помощью библиотек.
Вообще ситуации бывают разные и возможно такое пригодится.
Но конкретно в этой ситуации я тупо скопировал пример, чтобы разобраться что и как работает. И получил ошибку в порту и ничего на странице в браузере, хотя по идее должно было написать: “Привет, мир”.
Ведь примеры должны быть рабочие. Ну, или я не там проверяю работоспособность