Silver1616
New member
Всем привет, делаю проект интернет термометра на базе NodeMCU. Использую библиотеки
Сам код
Код рабочий для сервиса api.openweathermap.org , но при подключении к API Яндекса не работает. Нужно отправить GET запрос с ключом авторизации. У яндекса нет хоста и порта который бы возвращал статус 200 для установки соединения. Вопрос как с NODE MCV отправить GET запрос с заголовком не устанавливая предварительное соединение ?
C++:
#include <SPI.h>
#include <ArduinoJson.h>
#include <ESP8266WiFi.h>
#include <LCD_1602_RUS.h>
#include <LiquidCrystal_I2C.h>
C++:
const char* ssid = "****"; //имя точки доступа
const char* password = "****"; //пароль wifi
const char* host = "api.openweathermap.org";
String line;
void setup() {
lcd.init(); //инициализация LCD (подготовка к работе)
lcd.backlight(); //включение подсветки
Serial.begin(115200); //скорость передачи данных
delay(10);
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
jsonGet(); //запускаем функцию
}
void jsonGet() {
WiFiClient client;
const char* host = "api.openweathermap.org";
const int httpPort = 80;
if (!client.connect(host, httpPort))
{
Serial.println("connection failed");
return;
}
//Пишем в line строку адреса запроса
client.println("GET /data/2.5/weather?q=Adler&appid=22468a8530fc45261a0d7a4b22cb14c3&lang=ru&units=metric HTTP/1.1");
client.println("Host: api.openweathermap.org");
client.println("Connection: close");
client.println();
delay(1500);
// Read all the lines of the reply from server and print them to Serial
while(client.available())
{
line = client.readStringUntil('\r');
}
Serial.print(line);
Serial.println();
Serial.println("closing connection");
}
void loop() {
StaticJsonBuffer<2000> jsonBuffer; // буфер на 2000 символов
JsonObject& root = jsonBuffer.parseObject(line); // отправляем String
if (!root.success())
{
Serial.println("parseObject() failed"); // если ошибка, пишем об этом
jsonGet(); // обращаемся к серверу еще раз
return; // и теперь по новой парсим
}
Код рабочий для сервиса api.openweathermap.org , но при подключении к API Яндекса не работает. Нужно отправить GET запрос с ключом авторизации. У яндекса нет хоста и порта который бы возвращал статус 200 для установки соединения. Вопрос как с NODE MCV отправить GET запрос с заголовком не устанавливая предварительное соединение ?
C++:
const char* host = "api.openweathermap.org";
const int httpPort = 80;
if (!client.connect(host, httpPort))
{
Serial.println("connection failed");
return;
}