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
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 }
Generated on Tue Jul 12 2022 23:13:49 by 1.7.2