Здравствуйте! Отправляю запрос к сайту с погодой.
meteo38.ru/exp/t.js?st=uiii
Коннект проходит, а запрос возвращает ошибку. делаю так
WiFiClient w_client;
if (!w_client.connect("meteo38.ru",443)) return false;
// Отправляем запрос
w_client.println(String(F("GET /exp/t.js?st=uiii")) + String(F(" HTTP/1.1\r\nHost: meteo38.ru\r\n\r\n")));
Возвращает “400 Bad Request”
Полный ответ:
“< html>
< head>< title>400 The plain HTTP request was sent to HTTPS port< /title>< /head>
< body>
< center>< h1>400 Bad Request< /h1>< /center>
< center>The plain HTTP request was sent to HTTPS port< /center>
< hr>nginx/1.18.0 (Ubuntu)< /center>
< /body>
< /html>”
Если делать тоже самое, только погоду получать от яндекса, то все хорошо.
WiFiClient w_client;
if (!w_client.connect("yandex.com",443)) return false;
// Отправляем запрос
w_client.println(String(F("GET /time/sync.json?geo=63")) + String(F(" HTTP/1.1\r\nHost: yandex.com\r\n\r\n")));
Подскажите в чем ошибка в первом запросе к meteo38 .ru, ведь яндекс тоже с https?
rkit
10.Декабрь.2022 15:03:53
2
А тот факт, что ты отправляешь не https, и получаешь ответ, тебя в этом вопросе никак не смущает?
а с yandex почему работает?
ua6em
10.Декабрь.2022 15:19:33
4
duke2003:
/time/sync.json?geo=63
видимо строка запроса кривая
try{document.getElementById("meteo38_t_uiii").innerHTML='<a href="http://meteo38.ru/" style="color:#04d;text-decoration:none;">-20°</a>';}catch(err){};
rkit
10.Декабрь.2022 15:23:26
5
Ты реально не можешь сложить 2 и 2 и сделать логический вывод?
реально, не могу. разжуй мне пожалуйста, что нужно сделать, чтобы получить строку в ответе?
rkit
10.Декабрь.2022 15:37:14
7
Нужно отправить https запрос
можешь написать как? какую библиотеку использовать и т.д?
BOOM
10.Декабрь.2022 16:57:21
9
Я аж встал со стульчака, чем же http запрос отличается от https?
Шифрования инициатор сервер, а не клиент. И это вроде как не относится к коду запроса. Поясни, пожалуйста, чтобы я знал.
BOOM
10.Декабрь.2022 17:02:03
10
Ошибка 400 говорит вам, что Вы не правильно сформулировали запрос. Повторите тот же самый запрос в своём браузере, я думаю она повторится. Если повторится - изучайте как правильно отправить запрос.
в браузере возвращает
try{document.getElementById(“meteo38_t_uiii”).innerHTML=‘< a href=“http://meteo38.ru/ ” style=“color:#04d;text-decoration:none;”>-20°’;}catch(err){};
BOOM
10.Декабрь.2022 17:07:10
12
Ну так если тебе браузер ошибку возвращает на запрос, что ты от МК хочешь? Добейся внятного ответа в браузере, потом тот же запрос в мк пихай
ua6em
10.Декабрь.2022 18:09:16
13
вот АПИ:
meteo API endpoints:
---
Stations by distance -
/meteo/st/near?ll=LNG,LAT
/meteo/st/near?lat=LAT&lng=LNG
default parameters: &offset=0 &limit=10
Station info -
/meteo/st/info?st=ST1,ST2,...
Hourly aggregations -
/meteo/st/hourly?st=ST1,ST2,...&t0=TIME0&t1=TIME1
TIME0, TIME1 - iso formatted timestamps
---
rkit
10.Декабрь.2022 18:15:15
14
Нет. Клиент открывает tcp сессию и первым делом отправляет ClientHello.
ua6em
10.Декабрь.2022 18:31:41
15
Это точно работает и https тут не помеха:
<span id="meteo38_t_uiii"></span>
<script type="text/javascript" async="1"
src="http://meteo38.ru/exp/t.js?st=uiii"></script>
Иркутск:
<span id="meteo38_t_uiii"></span>
<script type="text/javascript" async="1" src="http://meteo38.ru/exp/t.js?st=uiii"> </script>
<br>
Краби:
<span id="meteo38_t_vtsg"></span>
<script type="text/javascript" async="1" src="http://meteo38.ru/exp/t.js?st=vtsg"></script>
<br>
Владивосток:
<span id="meteo38_t_uhww"></span>
<script type="text/javascript" async="1" src="http://meteo38.ru/exp/t.js?st=uhww"></script>
<br>
Абакан:
<span id="meteo38_t_unaa"></span>
<script type="text/javascript" async="1" src="http://meteo38.ru/exp/t.js?st=unaa"></script>
<br>
Минводы:
<span id="meteo38_t_urmm"></span>
<script type="text/javascript" async="1" src="http://meteo38.ru/exp/t.js?st=urmm"></script>
<br>