Wio 3G with Firebase example

Dependencies:   mbed-http

Fork of Wio_3G_HTTP-GET-example by Toyomasa Watarai

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "easy-connect.h"
00003 #include "https_request.h"
00004 
00005 Serial pc(USBTX, USBRX);
00006 
00007 /* List of trusted root CA certificates
00008  * This is the root CA for Google from GeoTrustGlobalCA
00009  *
00010  * To add more root certificates, just concatenate them.
00011  */
00012 const char SSL_CA_PEM[] = "-----BEGIN CERTIFICATE-----\n"
00013 "MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4G\n"
00014 "A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNp\n"
00015 "Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1\n"
00016 "MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEG\n"
00017 "A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI\n"
00018 "hvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6ErPL\n"
00019 "v4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8\n"
00020 "eoLrvozps6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklq\n"
00021 "tTleiDTsvHgMCJiEbKjNS7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzd\n"
00022 "C9XZzPnqJworc5HGnRusyMvo4KD0L5CLTfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pa\n"
00023 "zq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6CygPCm48CAwEAAaOBnDCB\n"
00024 "mTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUm+IH\n"
00025 "V2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5n\n"
00026 "bG9iYWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG\n"
00027 "3lm0mi3f3BmGLjANBgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4Gs\n"
00028 "J0/WwbgcQ3izDJr86iw8bmEbTUsp9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO\n"
00029 "291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu01yiPqFbQfXf5WRDLenVOavS\n"
00030 "ot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG79G+dwfCMNYxd\n"
00031 "AfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7\n"
00032 "TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==\n"
00033 "-----END CERTIFICATE-----";
00034 
00035 void dump_response(HttpResponse* res) {
00036     mbedtls_printf("Status: %d - %s\n", res->get_status_code(), res->get_status_message().c_str());
00037 
00038     mbedtls_printf("Headers:\n");
00039     for (size_t ix = 0; ix < res->get_headers_length(); ix++) {
00040         mbedtls_printf("\t%s: %s\n", res->get_headers_fields()[ix]->c_str(), res->get_headers_values()[ix]->c_str());
00041     }
00042     mbedtls_printf("\nBody (%d bytes):\n\n%s\n", res->get_body_length(), res->get_body_as_string().c_str());
00043 }
00044 
00045 int main() {
00046     pc.baud(115200);
00047 
00048     NetworkInterface* network = easy_connect(true);
00049     if (!network) {
00050         return 1;
00051     }
00052 
00053     // GET request to firebase.google.com
00054     {
00055         printf("\n----- HTTPS GET request -----\n");
00056 
00057         HttpsRequest* get_req = new HttpsRequest(network, SSL_CA_PEM, HTTP_GET, "https://firebase.google.com/styles/docs.css");
00058         get_req->set_debug(true);
00059 
00060         HttpResponse* get_res = get_req->send();
00061         if (!get_res) {
00062             printf("HttpRequest failed (error code %d)\n", get_req->get_error());
00063             return 1;
00064         }
00065         printf("\n----- HTTPS GET response -----\n");
00066         dump_response(get_res);
00067 
00068         delete get_req;
00069     }
00070 
00071     Thread::wait(osWaitForever);
00072 }
00073