Библиотека 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 при отладке.

, 👍3


1 ответ


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

6

"Авторизация" - это просто 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.

,

Я полагаю, что это сделано с помощью HttpClient, который предназначен для модулей ESP, могу ли я использовать его с моим MKR Wifi?, @Riccardo

С MKR WiFi 1010 вы используете библиотеку WiFiNINA, которая немного отличается. Я обновил свой ответ соответствующими деталями., @jwh20