3

I want to make an Http Post request with Bearer Authentication to my api using my Arduino Mkr Wifi 1010, but I couldn't find the appropriate library to do something like this (code generated with one made with 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": "name@email.it",
    "data": "2020-11-23T09:23:03.142+00:00",
    "temperatura": 37.5
}

Can you tell me where to find this library? I tried WifiNiNa httpClient, ArduinoHttpClient, HTTPClient and other but I couldn't get any response or even enter in the method of my api on debug.

Riccardo
  • 33
  • 4

1 Answers1

6

The "Authorization" is simply an HTTP header. So add it in your request like:

http.addHeader("Authorization", token);

The value of "token" is just the string "Bearer " followed by your authorization string. Don't neglect the SPACE after the word "Bearer". It will look like:

"Bearer eyJhb......"

On the Arduino MKR WiFi 1010 you use the WiFiNINA library which is slightly different. Here is some example code:

  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);
  }

The variable authorizationHeader will have the "Authorization: Bearer xxxxx...." authorization string.

Or you can replace the client.println(authorizationHeader); by:

client.print("Authorization: Bearer ");
client.print(token);

to avoid dealing with concatenations, etc.

client can be an instance of WiFiSSLClient which works with both WiFi101 and WiFiNINA.

Eugenio Pace
  • 276
  • 1
  • 9
jwh20
  • 1,025
  • 3
  • 8
  • I believe this is made with HTTPClient which is for ESP modules, can I use it with my MKR Wifi? – Riccardo Nov 24 '20 at 15:51
  • With the MKR WiFi 1010 you use the WiFiNINA library which is slightly different. I've updated my answer with the relevant details. – jwh20 Nov 24 '20 at 17:18