HTTP/HTTPS client Hello World application running with X-NUCLEO-IDW01M1v2 wifi board.

Dependencies:   HTTPClient NetworkSocketAPI X_NUCLEO_IDW01M1v2 mbed

Fork of HTTPClient_HelloWorld by ST Expansion SW Team

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 
00002 #include "mbed.h"
00003 #include "TCPSocket.h"
00004 #include "HTTPClient.h"
00005 
00006 
00007 //www.mbed.com CA certificate in PEM format
00008 char  CA_cert []="-----BEGIN CERTIFICATE-----\r\n"
00009 "MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG\r\n"
00010 "A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv\r\n"
00011 "b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw\r\n"
00012 "MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i\r\n"
00013 "YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT\r\n"
00014 "aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ\r\n"
00015 "jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp\r\n"
00016 "xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp\r\n"
00017 "1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG\r\n"
00018 "snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ\r\n"
00019 "U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8\r\n"
00020 "9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E\r\n"
00021 "BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B\r\n"
00022 "AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz\r\n"
00023 "yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE\r\n"
00024 "38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP\r\n"
00025 "AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad\r\n"
00026 "DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME\r\n"
00027 "HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==\r\n"
00028 "-----END CERTIFICATE-----\r\n";
00029 
00030 char str[512];
00031 DigitalOut myled(LED1);
00032 
00033 int main() 
00034 {
00035 
00036     printf("\r\nHTTPClient_HelloWorld mbed Application\r\n");     
00037     printf("\r\nconnecting to AP...\r\n");
00038     
00039     SpwfSAInterface spwf(D8, D2, PC_12, PC_8, false);
00040     spwf.connect("STM","STMDemo", NSAPI_SECURITY_WPA2);
00041 
00042     const char *ip = spwf.get_ip_address();
00043     printf("\r\nIP Address is: %s\r\n", ip);
00044 
00045     time_t ctTime;
00046     ctTime = time(NULL);             
00047     printf ("Start Secure Socket connection with one way server autentication test\n\r");                
00048     if (!spwf.get_time(&ctTime)) printf ("ERROR get_time\n\r");     // read WiFi module time
00049     else set_time(ctTime);  // set Nucleo system time
00050     printf("Initial System Time is: %s\r\n", ctime(&ctTime));   
00051     printf("Need to adjust time? if yes enter time in seconds elapsed since Epoch (cmd: date +'%%s'), otherwise enter 0 ");                
00052     int t=0;
00053     scanf("%d",&t);
00054     printf ("Entered time is: %d \n\r", t);
00055     if (t != 0) { 
00056        time_t txTm=t; ctTime=t; set_time(txTm);   // set Nucleo system time
00057        if (!spwf.set_time(ctTime)) printf ("ERROR set_time\n\r");          
00058     } else {
00059        if (!spwf.get_time(&ctTime)) printf ("ERROR get_time\n\r");  // read WiFi module time again to compensate time spent on scanf
00060        else set_time(ctTime);  // set Nucleo system time again to align with Wifi
00061     }
00062     printf ("The current system time is: %s\n\r", ctime (&ctTime));  
00063     spwf.get_time(&ctTime);
00064     printf ("The current wifi   time is: %s\n\r", ctime (&ctTime));  
00065     
00066     HTTPClient http(spwf);
00067     int ret;       
00068 
00069     if (!spwf.clean_TLS_certificate(ALL)) printf ("ERROR clean_TLS_certificate\n\r");
00070     if (!spwf.set_TLS_certificate(CA_cert, sizeof(CA_cert), FLASH_CA_ROOT_CERT)) printf ("ERROR set_TLS_certificate\n\r");
00071     if (!spwf.set_TLS_SRV_domain("*.mbed.com",FLASH_DOMAIN)) printf ("ERROR set_TLS_CA_domain\n\r");
00072     //GET data
00073     printf("\nTrying to fetch page...\n\r");
00074     ret = http.get("https://developer.mbed.org/media/uploads/donatien/hello.txt", str, 128, HTTP_CLIENT_DEFAULT_TIMEOUT);
00075 
00076 //ret = http.get("https://developer.mbed.org/media/uploads/donatien/hello.txt", str, 128, HTTP_CLIENT_DEFAULT_TIMEOUT);
00077 //ret = http.get("https://httpbin.org/ip", str, 128, HTTP_CLIENT_DEFAULT_TIMEOUT);
00078 //ret = http.get("https://www.mbed.com", str, 128, HTTP_CLIENT_DEFAULT_TIMEOUT);
00079 //  ret = http.get("http://httpstat.us", str, 128, HTTP_CLIENT_DEFAULT_TIMEOUT);
00080     if (!ret)
00081     {
00082       printf("Page fetched successfully - read %d characters\n\r", strlen(str));
00083       printf("Result: %s\n", str);
00084     }
00085     else
00086     {
00087       printf("Error - ret = %d - HTTP return code = %d\n\r", ret, http.getHTTPResponseCode());
00088     }
00089 
00090     //POST data
00091     HTTPMap map;
00092     HTTPText inText(str, 512);
00093     map.put("Hello", "World");
00094     map.put("test", "1234");
00095     printf("\nTrying to post data...\n\r");
00096     ret = http.post("http://httpbin.org/post", map, &inText, HTTP_CLIENT_DEFAULT_TIMEOUT);
00097 //    ret = http.post("http://posttestserver.com/post.php", map, &inText, HTTP_CLIENT_DEFAULT_TIMEOUT);
00098     if (!ret)
00099     {
00100       printf("Executed POST successfully - read %d characters\n\r", strlen(str));
00101       printf("Result: %s\n\r", str);
00102     }
00103     else
00104     {
00105       printf("Error - ret = %d - HTTP return code = %d\n\r", ret, http.getHTTPResponseCode());
00106     }
00107     
00108     //PUT data
00109     strcpy(str, "This is a PUT test!");
00110     HTTPText outText(str);
00111     //HTTPText inText(str, 512);
00112     printf("\nTrying to put resource...\n\r");
00113     ret = http.put("http://httpbin.org/put", outText, &inText);
00114     if (!ret)
00115     {
00116       printf("Executed PUT successfully - read %d characters\n\r", strlen(str));
00117       printf("Result: %s\n\r", str);
00118     }
00119     else
00120     {
00121       printf("Error - ret = %d - HTTP return code = %d\n\r", ret, http.getHTTPResponseCode());
00122     }
00123     
00124     //DELETE data
00125     //HTTPText inText(str, 512);
00126     printf("\nTrying to delete resource...\n\r");
00127     ret = http.del("http://httpbin.org/delete", &inText);
00128     if (!ret)
00129     {
00130       printf("Executed DELETE successfully - read %d characters\n\r", strlen(str));
00131       printf("Result: %s\n\r", str);
00132     }
00133     else
00134     {
00135       printf("Error - ret = %d - HTTP return code = %d\n", ret, http.getHTTPResponseCode());
00136     }
00137     
00138     spwf.disconnect();
00139     printf ("WIFI disconnected, exiting ...\n\r");
00140 
00141     while(1) { 
00142       wait(1);
00143       myled = !myled;
00144     }
00145 }