Description
Hello all.
First of all this is my first time posting on forums in github so if my way of posting is not as it should be, don't hesitate to point it out, i'll take it into account for my next posts.
So, i'm having an issue connecting to a website using MKRGSM 1400 with the GSMClient::connectSSL
function. I tried to connect on other website such as this one: "https://webhook.site/" and it worked perfectly, allowing me to send various GET and POST http request.
The thing is, to post or request anything on this website i need to put an authentification, i know the auth, and as i understand it has to go in the "POST" http request. Here is a screen of the website when i try to access it using chrome:
The problem being that, of course, i can't send a POST request without being connected to the domain wich i can't currently do.
I noticed that the certificate is quite particuliar for this website:
So i'm trying to upload on my board this sketch that is around here:
https://github.com/arduino-libraries/MKRGSM/tree/master/examples/SSLCertificateManagement
but i don't understand where i shoud search and what i am supposed to get or what it exactly is for that matter. Can anybody explain this to me? what should i use to find the proper files?
Just in case, my code is attached to the post (the certificateManagement
functions are not used on it for now as i don't understand them and don't want to permanently ruin the certificates registered on my board's hardware):
#include <MKRGSM.h> // GSM library
#include <Wire.h>
#include <FlashStorage.h>
#include <ArduinoJson.h>
#include "arduino_secrets.h"
//Donnée pour connexion au server
//char server[] = "webhook.site";
char server[] = "push.som2m.com";
//char path[] = "";
char path[] = "...............";//i just replaced it, i don't know if it was a wise choice (or useful) to show that
char authorization[] = "Authorization: i don't think i should show that";
GPRS gprs;
GSM gsmAccess;
GSMSSLClient client (true);
void setup() {
Serial.begin(9600);
while (!Serial) {};
//Enter Your SIM Card details below
char apn[] = "";
char login[] = "";
char pwd[] = "";
bool Connected = false;
while (!Connected) {
if ((gsmAccess.begin() == GSM_READY) & (gprs.attachGPRS(apn, login, pwd) == GPRS_READY)) {
Connected = true;
Serial.println(F("connected!"));
}
else
{
Serial.println(F("not connected :("));
delay(1000);
}
}
Serial.println(F("Connection..."));
// Connect to HTTP server
int err = client.connectSSL(server, 443);
while (err == 0) {
Serial.println("Error, retrying:"); //Code always stuck here: on domain connection.
delay(10000);
err = client.connectSSL(server, 443);
}
while (client.available()) {
char c = client.read();
Serial.print(c);
}
Serial.println("Connected!");
StaticJsonDocument<384> doc;
/*
JSON created for testing purposes here, no need to show it.
*/
client.print("POST ");
client.print(path);
client.println(" HTTP/1.1");
//client.println("User-Agent: mw.doc.bulk-update (Arduino MKR GSM 1400)");//is this line useful?
client.print("Host: ");
client.println(server);
client.println("Connection: keep-alive");
client.println("Content-Type: application/json");
client.println(authorization);
client.print("Content-Length: ");
client.println(measureJson(doc));
client.println();
// Write JSON document
serializeJson(doc, client);
}
void loop() {
if (!client.available() && !client.connected()) {
Serial.println();
Serial.println("disconnecting.");
client.stop();
while (1);
}
}