HTTPS GET request работает на esp32 но не на esp8266

esp8266 esp32 http web-service

Я пытаюсь портировать свою программу esp32 на esp8266, и я столкнулся с проблемой, когда я не могу получить ответ от HTTPS GET запроса на esp8266, но на esp32 тот же код работает нормально. Функция, которую я использую, выглядит так:

void GetHTTP()
{
  if (WiFi.status() == WL_CONNECTED)
  {
    HTTPClient http;
    http.begin(requestURL);
    int httpCode = http.GET();
    if (httpCode > 0)
    {
      requestData = http.getString();
      GenerateTable();
      //GetDelimiterCount(requestData, delimiterStart);
    }
    http.end();
  }
}

Я также попытался запустить свой запрос с помощью esp8266 "BasicHttpsClient" и "Basichttpsclient", и в обоих случаях программа возвращает ошибку: "соединение не удалось" из https.errorToString(HttpCode).s_str() или http-код "-1" без каких-либо специфических кодов ошибок API.

Я запрашиваю от Trafiklab realtime infromation v4 API, и запрос выглядит примерно так:

https://api.sl.se/api2/realtimedeparturesV4.json?

Я опустил ключ API и параметры, которые я использую из этого URL-адреса. Ответ также является правильным, когда его запрашивает любой браузер.

Может быть, это как-то связано с SSL? Я совершенно не понимаю, в чем могут быть различия между http-клиентскими библиотеками esp32 и esp8266. Я также использую последнюю версию библиотек плат ESP8266 (2.7.4).

, 👍1

Обсуждение

см. примеры библиотеки ESP8266HttpClient, @Juraj

Я сделал. Я упоминал об этом в своем первоначальном посте., @Boyfinn

посмотри еще раз. сосредоточьтесь на первом параметре http.begin в BasicHttpsClient, @Juraj


1 ответ


Лучший ответ:

0

Я закончил тем, что использовал

ESP8266WiFi.h

вместо этого

ESP8266WiFiMulti.h

Это исправило как мой исходный код, так и базовый пример HTTPS. Хотя я до сих пор не понимаю, какая разница.

,