/* HTTP over TLS (HTTPS) example sketch This example demonstrates how to use WiFiClientSecure class to access HTTPS API. We fetch and display the status of esp8266/Arduino project continuous integration build. Created by Ivan Grokhotkov, 2015. This example is in public domain. */ #include #include #include "certs.h" #ifndef STASSID #define STASSID "your-ssid" #define STAPSK "your-password" #endif const char* ssid = STASSID; const char* password = STAPSK; X509List cert(cert_DigiCert_Global_Root_CA); void setup() { Serial.begin(115200); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); // Set time via NTP, as required for x.509 validation configTime(3 * 3600, 0, "pool.ntp.org", "time.nist.gov"); Serial.print("Waiting for NTP time sync: "); time_t now = time(nullptr); while (now < 8 * 3600 * 2) { delay(500); Serial.print("."); now = time(nullptr); } Serial.println(""); struct tm timeinfo; gmtime_r(&now, &timeinfo); Serial.print("Current time: "); Serial.print(asctime(&timeinfo)); // Use WiFiClientSecure class to create TLS connection WiFiClientSecure client; Serial.print("Connecting to "); Serial.println(github_host); Serial.printf("Using certificate: %s\n", cert_DigiCert_Global_Root_CA); client.setTrustAnchors(&cert); if (!client.connect(github_host, github_port)) { Serial.println("Connection failed"); return; } String url = "/repos/esp8266/Arduino/commits/master/status"; Serial.print("Requesting URL: "); Serial.println(url); client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + github_host + "\r\n" + "User-Agent: BuildFailureDetectorESP8266\r\n" + "Connection: close\r\n\r\n"); Serial.println("Request sent"); while (client.available()) { String line = client.readStringUntil('\n'); if (line == "\r") { Serial.println("Headers received"); break; } } String line = client.readStringUntil('\n'); if (line.startsWith("{\"state\":\"success\"")) { Serial.println("esp8266/Arduino CI successful!"); } else { Serial.println("esp8266/Arduino CI has failed"); } Serial.println("Reply was:"); Serial.println("=========="); Serial.println(line); Serial.println("=========="); Serial.println("Closing connection"); } void loop() {}