Пример SSL-клиента Arduino MKR GSM 1400 не удается подключиться
Я использую пример GsmSSLWebClient, который поставляется с библиотекой MKRGSM. Исходный пример работает отлично, я получаю логотип arduino ascii. Но когда я меняю URL-адрес, Arduino не получает ответа:
//char server[] = "arduino.cc";
//char path[] = "/asciilogo.txt";
char server[] = "wepardi.fi";
char path[] = "/robots.txt";
Starting Arduino web client.
connecting...
connected
GET /robots.txt HTTP/1.1
Host: wepardi.fi
Connection: close
disconnecting.
Из Firefox https://www.wepardi.fi/robots.tx t отображается правильно. Я пробовал также некоторые другие сайты, и с некоторых из них я правильно получаю содержимое файла ascii, а с некоторых - нет.
Что-то не так с моими настройками?
Печать из режима отладки:
connecting...
...
AT+USECMNG=0,0,"VeriSign_Class_3_Public_Primary_Certification_Authority_G5",1239
>
+USECMNG: 0,0,"VeriSign_Class_3_Public_Primary_Certification_Authority_G5","cb17e431673ee209fe455793f30afa1c"
OK
AT+USOCR=6
+USOCR: 0
OK
AT+USOSEC=0,1,0
OK
AT+USECPRF=0,0,1,4,"www.wepardi.fi"
OK
AT+USOCO=0,"www.wepardi.fi",443
ERROR
+UUSOCL: 0
AT+USOCL=0
ERROR
connected
GET /robots.txt HTTP/1.1
Host: www.wepardi.fi
Connection: close
disconnecting.
Команда AT+USOCO=0,"www.wepardi.fi",443 не получается
Пример GsmWebClient (без SSL) отлично работает на всех хостах, которые я пробовал.
@Tiina, 👍0
Обсуждение2 ответа
У вас проблема с перенаправлением.
Вы подключаетесь к wepardi.fi
и запрашиваете файл /robots.txt
с этого хоста. Он сразу же скажет вам: «Хорошо, но на самом деле этот файл находится на www.wepardi.fi/robots.txt
. Возьмите его оттуда».
Но этого не произойдет.
Вам необходимо обратиться непосредственно к источнику.
Вот след:
GET /robots.txt HTTP/1.1
Host: wepardi.fi
Connection: close
HTTP/1.1 302 Found
Date: Tue, 08 Jan 2019 14:26:51 GMT
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.0.32
Strict-Transport-Security: max-age=63072000; includeSubdomains;
X-Powered-By: PHP/7.0.32
Location: https://www.wepardi.fi/
Cache-Control: max-age=1296000
Expires: Wed, 23 Jan 2019 14:26:51 GMT
Content-Length: 0
Connection: close
Content-Type: text/html; charset=UTF-8
И когда вы перейдете на www.wepardi.fi
:
GET /robots.txt HTTP/1.1
Host: www.wepardi.fi
Connection: close
HTTP/1.1 200 OK
Date: Tue, 08 Jan 2019 14:27:49 GMT
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.0.32
Strict-Transport-Security: max-age=63072000; includeSubdomains;
X-Powered-By: PHP/7.0.32
X-Robots-Tag: noindex, follow
Link: <https://www.wepardi.fi/wp-json/>; rel="https://api.w.org/"
Cache-Control: max-age=300
Expires: Tue, 08 Jan 2019 14:32:49 GMT
Content-Length: 67
Connection: close
Content-Type: text/plain; charset=utf-8
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
read:errno=0
Спасибо, но я все равно не получаю содержимое файла: Запуск веб-клиента Arduino. подключение... связанный ПОЛУЧИТЬ /robots.txt HTTP/1.1 Хост: www.wepardi.fi. Соединение: закрыть отключение., @Tiina
Можете ли вы получить какой-либо ответ на запрос?, @Majenko
Наконец-то я нашел решение этой проблемы. Отключение проверки сертификата в библиотеке MKRGSM обеспечивает успешное SSL-соединение и с этим сайтом. В MKRGSM/src/GSMClient.cpp я изменил
// MODEM.sendf("AT+USECPRF=0,0,1,4,\"%s\"", _host);
MODEM.sendf("AT+USECPRF=0");
чтобы использовать заводские настройки модема. Я до сих пор не знаю, в чем была проблема с сертификатами. Спасибо всем, кто пытался помочь с этим.
- Множественная ошибка определения при связывании firmware.elf
- Arduino MKR GSM 1400: Можно ли сказать по коду, сработало ли питание
- Как отправить АТ команды на модем ubox на MKR NB 1500
- Как проверить, активно ли соединение MQTT?
- Полудуплекс для Atmel SAMD21
- MKR GSM 1400 Работает только при подключении к компьютеру
- MKR1400-как устранить неполадки в запросе POST?
в браузере вы вводите www.wepardi.fi, а в Arduino только wepardi.fi, @Juraj