Библиотека Arduino для выполнения http post запроса с аутентификацией носителя (bearer)
Я хочу сделать Http-запрос Post с аутентификацией на предъявителя к моему api, используя мой Arduino Mkr Wifi 1010, но я не смог найти подходящую библиотеку для выполнения чего-то подобного (код, сгенерированный с помощью Postman):
POST /api/v1/rilevamento/transaction/commit HTTP/1.1
Host: www.....:8082
Authorization: Bearer eyJhb.......
Content-Type: application/json
Content-Length: 233
{
"id": 0,
"dispositivo": "sesto",
"nomeutente": "MyName",
"cognomeutente": "MySurname",
"mailutente": "[email protected]",
"data": "2020-11-23T09:23:03.142+00:00",
"temperatura": 37.5
}
Не могли бы вы сказать мне, где найти эту библиотеку? Я пробовал WifiNiNa HttpClient, ArduinoHttpClient, HttpClient и другие, но я не смог получить никакого ответа или даже ввести метод моего api при отладке.
@Riccardo, 👍3
1 ответ
Лучший ответ:
"Авторизация" - это просто HTTP-заголовок. Поэтому добавьте его в свой запрос следующим образом:
http.addHeader("Authorization", token);
Значение "токена" - это просто строка "Bearer", за которой следует ваша строка авторизации. Не пренебрегайте ПРОБЕЛОМ после слова "Предъявитель". Это будет выглядеть следующим образом:
"Предъявитель Эйджхб....."
На Arduino MKR WiFi 1010 вы используете библиотеку WiFiNINA, которая немного отличается. Вот несколько примеров кода:
if (client.connect(server, 80)) {
client.println("POST /test/post.php HTTP/1.1");
client.println("Host: www.targetserver.com");
client.println(authorizationHeader);
client.println("Content-Type: application/x-www-form-urlencoded");
client.print("Content-Length: ");
client.println(postData.length());
client.println();
client.print(postData);
}
Переменная authorizationHeader
будет иметь строку авторизации "Authorization: Bearer xxxxx ....".
Или вы можете заменить client.println(authorizationHeader);
на:
client.print("Authorization: Bearer ");
client.print(token);
чтобы избежать работы с конкатенациями и т. Д.
клиент
может быть экземпляром WiFiSSLClient
, который работает как с WiFi101, так
и с WiFiNINA
.
- Проанализировать большой ответ json с помощью ESP8266
- Запрос POST (HTTPClient) с ESP8266, не работающим на локальном хосте (код http = -1)
- HTTPS-клиент с MKR1000
- Невозможно установить связь между модулем ESP-12E и мобильным устройством через маршрутизатор ESP-12E.
- Mkr1010 отключается и снова подключается нормально до тех пор, пока не достигнет точки, где он никогда больше не подключится снова
- ESP8266 загружает данные на облачную платформу Google
- ESP32-S3 — HttpClient возвращает только код состояния 200 без данных полезной нагрузки JSON
- Можно ли сделать обновление OTA, используя ссылку GitHub
Я полагаю, что это сделано с помощью HttpClient, который предназначен для модулей ESP, могу ли я использовать его с моим MKR Wifi?, @Riccardo
С MKR WiFi 1010 вы используете библиотеку WiFiNINA, которая немного отличается. Я обновил свой ответ соответствующими деталями., @jwh20