Example program demonstrating use of HTTP or HTTPS protocol over a cellular connection with httpbin.org using the MTSAS library. (Demonstrates GET,POST,basic-auth)

Dependencies:   mbed mtsas

Committer:
Vanger
Date:
Mon Mar 16 21:35:01 2015 +0000
Revision:
6:e5ea200c66c3
Parent:
5:931abf45fb92
Child:
9:794c538a84aa
Added example code for HTTPS connections. (Trusted certificates are stored in certs.h)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Vanger 6:e5ea200c66c3 1 /** For an unsecure HTTP example, just build as is. But, to use the
Vanger 6:e5ea200c66c3 2 * HTTPS example, comment out the first main declaration and
Vanger 6:e5ea200c66c3 3 * uncomment the second main declaration at the end of this file.
Vanger 6:e5ea200c66c3 4 */
Vanger 6:e5ea200c66c3 5
Vanger 6:e5ea200c66c3 6 //Start of the HTTP code
Vanger 6:e5ea200c66c3 7 ///The example HTTP code sets up a connection to httpbin.org,
Vanger 6:e5ea200c66c3 8 ///sends a get request on the url: http://httpbin.org/get,
Vanger 6:e5ea200c66c3 9 ///then it sends a post request to the url: http://httpbin.org/post
Vanger 6:e5ea200c66c3 10 ///Please let us know if you have any questions/would like more examples.
Vanger 0:0be90fca1622 11 #include "mbed.h"
Vanger 0:0be90fca1622 12 #include "mtsas.h"
Vanger 0:0be90fca1622 13
Vanger 0:0be90fca1622 14 int main(){
Vanger 0:0be90fca1622 15 //Modify to match your apn if you are using an HSPA radio with a SIM card
Vanger 2:e20a75d47720 16 const char APN[] = "";
Vanger 2:e20a75d47720 17
Vanger 3:85181c1324f2 18 //Sets the log level to INFO, higher log levels produce more log output.
Vanger 3:85181c1324f2 19 //Possible levels: NONE, FATAL, ERROR, WARNING, INFO, DEBUG, TRACE
Vanger 2:e20a75d47720 20 MTSLog::setLogLevel(MTSLog::INFO_LEVEL);
Vanger 0:0be90fca1622 21
Vanger 2:e20a75d47720 22 //Receive buffer
Vanger 2:e20a75d47720 23 char rbuf[4000];
Vanger 0:0be90fca1622 24
Vanger 2:e20a75d47720 25 //url strings for HTTP requests, httpbin.org is a public website for fielding test HTTP requests
Vanger 6:e5ea200c66c3 26 string url, base_url = "http://httpbin.org:80", url_get = "/get", url_post = "/post";
Vanger 0:0be90fca1622 27
Vanger 6:e5ea200c66c3 28 /// STMicro Nucelo F401RE
Vanger 6:e5ea200c66c3 29 /// The supported jumper configurations of the MTSAS do not line up with
Vanger 6:e5ea200c66c3 30 /// the pin mapping of the Nucleo F401RE. Therefore, the MTSAS serial TX
Vanger 6:e5ea200c66c3 31 /// pin (JP8 Pin 2) must be manually jumped to Serial1 RX (Shield pin D2)
Vanger 6:e5ea200c66c3 32 /// and the MTSAS serial RX pin (JP9 Pin 2) pin must be manually jumped to
Vanger 6:e5ea200c66c3 33 /// Serial1 TX (Shield pin D8).
Vanger 6:e5ea200c66c3 34 /// Uncomment the following line to use the STMicro Nuceleo F401RE
Vanger 0:0be90fca1622 35 MTSSerialFlowControl* io = new MTSSerialFlowControl(D8, D2, D3, D6);
Vanger 0:0be90fca1622 36
Vanger 6:e5ea200c66c3 37 /// Dragonfly
Vanger 6:e5ea200c66c3 38 /// To configure the serial pins for the Dragonfly board, use:
Vanger 6:e5ea200c66c3 39 /// RADIO_TX = pin PC_7, RADIO_RX = pin PC_6
Vanger 6:e5ea200c66c3 40 /// RADIO_RTS = pin PB_10,RADIO_CTS = pin PB_12
Vanger 6:e5ea200c66c3 41 /// Uncomment the following lines to use the Dragonfly board
Vanger 5:931abf45fb92 42 //MTSSerialFlowControl* io = new MTSSerialFlowControl(PC_7, PC_6, PB_10, PB_12);
Vanger 5:931abf45fb92 43
Vanger 6:e5ea200c66c3 44 /// Freescale KL46Z
Vanger 6:e5ea200c66c3 45 /// To configure the serial pins for the Freescale KL46Z board, use MTSAS jumper
Vanger 6:e5ea200c66c3 46 /// configuration B. Uncomment the following line to use the Freescale KL46Z board
Vanger 0:0be90fca1622 47 //MTSSerialFlowControl* io = new MTSSerialFlowControl(D2, D9, D3, D6);
Vanger 0:0be90fca1622 48
Vanger 6:e5ea200c66c3 49 /// Freescale K64F
Vanger 6:e5ea200c66c3 50 /// To configure the serial pins for the Freescale K64F board, use MTSAS jumper
Vanger 6:e5ea200c66c3 51 /// configuration A. Uncomment the following line to use the Freescale K64F board
Vanger 0:0be90fca1622 52 //MTSSerialFlowControl* io = new MTSSerialFlowControl(D1, D0, D3, D6);
Vanger 0:0be90fca1622 53
Vanger 4:09d5f99b94b1 54 //Sets the baud rate for communicating with the radio
Vanger 0:0be90fca1622 55 io->baud(115200);
Vanger 0:0be90fca1622 56
Vanger 2:e20a75d47720 57 //Initialize radio configurations
Vanger 0:0be90fca1622 58 Cellular* radio = CellularFactory::create(io);
Vanger 2:e20a75d47720 59 if( ! radio) {
Vanger 2:e20a75d47720 60 logFatal("Radio initialization failed");
Vanger 3:85181c1324f2 61 return 1;
Vanger 2:e20a75d47720 62 }
Vanger 2:e20a75d47720 63 radio->configureSignals(D4,D7,RESET);
Vanger 2:e20a75d47720 64 Transport::setTransport(radio);
Vanger 2:e20a75d47720 65
Vanger 2:e20a75d47720 66 //Set up HTTP interface
Vanger 2:e20a75d47720 67 HTTPClient* http = new HTTPClient();
Vanger 3:85181c1324f2 68 HTTPText* receive = new HTTPText(rbuf, 4000);
Vanger 2:e20a75d47720 69
Vanger 3:85181c1324f2 70 //Set radio APN
Vanger 3:85181c1324f2 71 for (int i = 0; i < 10; i++) {
Vanger 3:85181c1324f2 72 if (i >= 10) {
Vanger 3:85181c1324f2 73 logError("Failed to set APN to %s", APN);
Vanger 3:85181c1324f2 74 }
Vanger 3:85181c1324f2 75 if (radio->setApn(APN) == MTS_SUCCESS) {
Vanger 3:85181c1324f2 76 logInfo("Successfully set APN to %s", APN);
Vanger 3:85181c1324f2 77 break;
Vanger 3:85181c1324f2 78 } else {
Vanger 3:85181c1324f2 79 wait(1);
Vanger 3:85181c1324f2 80 }
Vanger 3:85181c1324f2 81 }
Vanger 0:0be90fca1622 82
Vanger 0:0be90fca1622 83 //Establish PPP link
Vanger 3:85181c1324f2 84 for (int i = 0; i < 10; i++) {
Vanger 3:85181c1324f2 85 if (i >= 10) {
Vanger 3:85181c1324f2 86 logError("Failed to establish PPP link");
Vanger 3:85181c1324f2 87 }
Vanger 3:85181c1324f2 88 if (radio->connect() == true) {
Vanger 3:85181c1324f2 89 logInfo("Successfully established PPP link");
Vanger 3:85181c1324f2 90 break;
Vanger 3:85181c1324f2 91 } else {
Vanger 3:85181c1324f2 92 wait(1);
Vanger 3:85181c1324f2 93 }
Vanger 3:85181c1324f2 94 }
Vanger 0:0be90fca1622 95
Vanger 2:e20a75d47720 96 //Format HTTP Get request
Vanger 2:e20a75d47720 97 url = base_url + url_get;
Vanger 0:0be90fca1622 98
Vanger 2:e20a75d47720 99 //Send HTTP GET request
Vanger 2:e20a75d47720 100 for (int i = 0; i < 10; i++) {
Vanger 2:e20a75d47720 101 if(http->get(url.c_str(), receive, 5000) == HTTP_OK) {
Vanger 3:85181c1324f2 102 logInfo("HTTP get succeeded\n%s", rbuf);
Vanger 2:e20a75d47720 103 break;
Vanger 2:e20a75d47720 104 }
Vanger 2:e20a75d47720 105 if (i >= 10) {
Vanger 2:e20a75d47720 106 logError("HTTP GET failed");
Vanger 2:e20a75d47720 107 }
Vanger 2:e20a75d47720 108 wait(1);
Vanger 2:e20a75d47720 109 }
Vanger 0:0be90fca1622 110
Vanger 6:e5ea200c66c3 111 //Format HTTP POST request
Vanger 6:e5ea200c66c3 112 url = base_url + url_post;
Vanger 6:e5ea200c66c3 113
Vanger 6:e5ea200c66c3 114 //Create data to send
Vanger 6:e5ea200c66c3 115 char sbuf[60] = "Hello World! We are testing the MTSAS HTTP Example Program";
Vanger 6:e5ea200c66c3 116 HTTPText send = HTTPText(sbuf);
Vanger 6:e5ea200c66c3 117
Vanger 6:e5ea200c66c3 118 //Send HTTP POST request
Vanger 6:e5ea200c66c3 119 for (int i = 0; i < 10; i++) {
Vanger 6:e5ea200c66c3 120 if(http->post(url.c_str(), send, receive, 5000) == HTTP_OK) {
Vanger 6:e5ea200c66c3 121 logInfo("HTTP POST succeeded\n%s", rbuf);
Vanger 6:e5ea200c66c3 122 break;
Vanger 6:e5ea200c66c3 123 }
Vanger 6:e5ea200c66c3 124 if (i >= 10) {
Vanger 6:e5ea200c66c3 125 logError("HTTP POST failed");
Vanger 6:e5ea200c66c3 126 }
Vanger 6:e5ea200c66c3 127 wait(1);
Vanger 6:e5ea200c66c3 128 }
Vanger 6:e5ea200c66c3 129
Vanger 0:0be90fca1622 130 //Disconnect PPP link
Vanger 0:0be90fca1622 131 radio->disconnect();
Vanger 0:0be90fca1622 132
Vanger 2:e20a75d47720 133 logInfo("End of example code\n");
Vanger 0:0be90fca1622 134 return 0;
Vanger 6:e5ea200c66c3 135 }
Vanger 6:e5ea200c66c3 136 //End of the HTTP code
Vanger 6:e5ea200c66c3 137
Vanger 6:e5ea200c66c3 138
Vanger 6:e5ea200c66c3 139 //Start of the HTTPS code
Vanger 6:e5ea200c66c3 140 ///The example HTTPS code sets up a secure connection to httpbin.org,
Vanger 6:e5ea200c66c3 141 ///sends a get request on the url: https://httpbin.org/get,
Vanger 6:e5ea200c66c3 142 ///then it sends a post request to the url: https://httpbin.org/post
Vanger 6:e5ea200c66c3 143 ///and finally it demonstrates a basic authentication with a get request
Vanger 6:e5ea200c66c3 144 ///to the url: https://httpin.org/basic-auth/Bob/123
Vanger 6:e5ea200c66c3 145 ///Please let us know if you have any questions/would like more examples.
Vanger 6:e5ea200c66c3 146 /*
Vanger 6:e5ea200c66c3 147 #include "mbed.h"
Vanger 6:e5ea200c66c3 148 #include "mtsas.h"
Vanger 6:e5ea200c66c3 149 #include "certs.h"
Vanger 6:e5ea200c66c3 150
Vanger 6:e5ea200c66c3 151 //Function to convert http int results to string messages
Vanger 6:e5ea200c66c3 152 char * httpResToStr(HTTPResult res);
Vanger 6:e5ea200c66c3 153
Vanger 6:e5ea200c66c3 154 int main(){
Vanger 6:e5ea200c66c3 155
Vanger 6:e5ea200c66c3 156 //Modify to match your apn if you are using an HSPA radio with a SIM card
Vanger 6:e5ea200c66c3 157 const char APN[] = "";
Vanger 6:e5ea200c66c3 158
Vanger 6:e5ea200c66c3 159 //Sets the log level to INFO, higher log levels produce more log output.
Vanger 6:e5ea200c66c3 160 //Possible levels: NONE, FATAL, ERROR, WARNING, INFO, DEBUG, TRACE
Vanger 6:e5ea200c66c3 161 MTSLog::setLogLevel(MTSLog::INFO_LEVEL);
Vanger 6:e5ea200c66c3 162
Vanger 6:e5ea200c66c3 163 //Receive buffer
Vanger 6:e5ea200c66c3 164 char rbuf[4000];
Vanger 6:e5ea200c66c3 165
Vanger 6:e5ea200c66c3 166 //url strings for HTTPS requests, httpbin.org is a public website for fielding test HTTPS requests
Vanger 6:e5ea200c66c3 167 string url, secure_url = "https://httpbin.org:443", url_get = "/get", url_auth = "/basic-auth", url_post = "/post";
Vanger 6:e5ea200c66c3 168
Vanger 6:e5ea200c66c3 169 /// STMicro Nucelo F401RE
Vanger 6:e5ea200c66c3 170 /// The supported jumper configurations of the MTSAS do not line up with
Vanger 6:e5ea200c66c3 171 /// the pin mapping of the Nucleo F401RE. Therefore, the MTSAS serial TX
Vanger 6:e5ea200c66c3 172 /// pin (JP8 Pin 2) must be manually jumped to Serial1 RX (Shield pin D2)
Vanger 6:e5ea200c66c3 173 /// and the MTSAS serial RX pin (JP9 Pin 2) pin must be manually jumped to
Vanger 6:e5ea200c66c3 174 /// Serial1 TX (Shield pin D8).
Vanger 6:e5ea200c66c3 175 /// Uncomment the following line to use the STMicro Nuceleo F401RE
Vanger 6:e5ea200c66c3 176 MTSSerialFlowControl* io = new MTSSerialFlowControl(D8, D2, D3, D6);
Vanger 6:e5ea200c66c3 177
Vanger 6:e5ea200c66c3 178 /// Dragonfly
Vanger 6:e5ea200c66c3 179 /// To configure the serial pins for the Dragonfly board, use:
Vanger 6:e5ea200c66c3 180 /// RADIO_TX = pin PC_7, RADIO_RX = pin PC_6
Vanger 6:e5ea200c66c3 181 /// RADIO_RTS = pin PB_10,RADIO_CTS = pin PB_12
Vanger 6:e5ea200c66c3 182 /// Uncomment the following lines to use the Dragonfly board
Vanger 6:e5ea200c66c3 183 //MTSSerialFlowControl* io = new MTSSerialFlowControl(PC_7, PC_6, PB_10, PB_12);
Vanger 6:e5ea200c66c3 184
Vanger 6:e5ea200c66c3 185 /// Freescale KL46Z
Vanger 6:e5ea200c66c3 186 /// To configure the serial pins for the Freescale KL46Z board, use MTSAS jumper
Vanger 6:e5ea200c66c3 187 /// configuration B. Uncomment the following line to use the Freescale KL46Z board
Vanger 6:e5ea200c66c3 188 //MTSSerialFlowControl* io = new MTSSerialFlowControl(D2, D9, D3, D6);
Vanger 6:e5ea200c66c3 189
Vanger 6:e5ea200c66c3 190 /// Freescale K64F
Vanger 6:e5ea200c66c3 191 /// To configure the serial pins for the Freescale K64F board, use MTSAS jumper
Vanger 6:e5ea200c66c3 192 /// configuration A. Uncomment the following line to use the Freescale K64F board
Vanger 6:e5ea200c66c3 193 //MTSSerialFlowControl* io = new MTSSerialFlowControl(D1, D0, D3, D6);
Vanger 6:e5ea200c66c3 194
Vanger 6:e5ea200c66c3 195 //Sets the baud rate for communicating with the radio
Vanger 6:e5ea200c66c3 196 io->baud(115200);
Vanger 6:e5ea200c66c3 197
Vanger 6:e5ea200c66c3 198 MTSLog::setLogLevel(MTSLog::TRACE_LEVEL);
Vanger 6:e5ea200c66c3 199
Vanger 6:e5ea200c66c3 200 //Initialize radio configurations
Vanger 6:e5ea200c66c3 201 Cellular* radio = CellularFactory::create(io);
Vanger 6:e5ea200c66c3 202 if( ! radio) {
Vanger 6:e5ea200c66c3 203 logFatal("Radio initialization failed");
Vanger 6:e5ea200c66c3 204 return 1;
Vanger 6:e5ea200c66c3 205 }
Vanger 6:e5ea200c66c3 206
Vanger 6:e5ea200c66c3 207 radio->configureSignals(D4,D7,RESET);
Vanger 6:e5ea200c66c3 208 Transport::setTransport(radio);
Vanger 6:e5ea200c66c3 209
Vanger 6:e5ea200c66c3 210 //Set radio APN
Vanger 6:e5ea200c66c3 211 for (int i = 0; i < 10; i++) {
Vanger 6:e5ea200c66c3 212 if (i >= 10) {
Vanger 6:e5ea200c66c3 213 logFatal("Failed to set APN to %s", APN);
Vanger 6:e5ea200c66c3 214 return 1;
Vanger 6:e5ea200c66c3 215 }
Vanger 6:e5ea200c66c3 216 if (radio->setApn(APN) == MTS_SUCCESS) {
Vanger 6:e5ea200c66c3 217 logInfo("Successfully set APN to %s", APN);
Vanger 6:e5ea200c66c3 218 break;
Vanger 6:e5ea200c66c3 219 } else {
Vanger 6:e5ea200c66c3 220 wait(1);
Vanger 6:e5ea200c66c3 221 }
Vanger 6:e5ea200c66c3 222 }
Vanger 6:e5ea200c66c3 223
Vanger 6:e5ea200c66c3 224 //Establish PPP link
Vanger 6:e5ea200c66c3 225 for (int i = 0; i < 10; i++) {
Vanger 6:e5ea200c66c3 226 if (i >= 10) {
Vanger 6:e5ea200c66c3 227 logError("Failed to establish PPP link");
Vanger 6:e5ea200c66c3 228 }
Vanger 6:e5ea200c66c3 229 if (radio->connect() == true) {
Vanger 6:e5ea200c66c3 230 logInfo("Successfully established PPP link");
Vanger 6:e5ea200c66c3 231 break;
Vanger 6:e5ea200c66c3 232 } else {
Vanger 6:e5ea200c66c3 233 wait(1);
Vanger 6:e5ea200c66c3 234 }
Vanger 6:e5ea200c66c3 235 }
Vanger 6:e5ea200c66c3 236
Vanger 6:e5ea200c66c3 237 //Set up HTTP interface
Vanger 6:e5ea200c66c3 238 HTTPClient* http = new HTTPClient();
Vanger 6:e5ea200c66c3 239 HTTPText* receive = new HTTPText(rbuf, 5000);
Vanger 6:e5ea200c66c3 240 HTTPResult res;
Vanger 6:e5ea200c66c3 241
Vanger 6:e5ea200c66c3 242 //Adds the root certificates for accepted websites to verify that
Vanger 6:e5ea200c66c3 243 //the remote host is who it says it is.
Vanger 6:e5ea200c66c3 244 //Instructions on obtaining the root certificate is included in certs.h
Vanger 6:e5ea200c66c3 245 //(Basically, only load certificates of trusted websites)
Vanger 6:e5ea200c66c3 246 //Certificates should be written in PEM format, starts with
Vanger 6:e5ea200c66c3 247 //-----BEGIN CERTIFICATE----- and ends with -----END CERTIFICATE-----
Vanger 6:e5ea200c66c3 248 //Each line in between must be less than 64 or less characters in length,
Vanger 6:e5ea200c66c3 249 //and each line in the certificate must end with /r/n, ex:
Vanger 6:e5ea200c66c3 250 //-----BEGIN CERTIFICATE-----\r\n
Vanger 6:e5ea200c66c3 251 //923JNF0A7H43HA3F90JA3JMFGNM9A...\r\n
Vanger 6:e5ea200c66c3 252 //9823HJ9F8HA8GF283H9A8JF901239...\r\n
Vanger 6:e5ea200c66c3 253 //239F8A93HUF898AYU230FUA0239UF...\r\n
Vanger 6:e5ea200c66c3 254 //98HAW9EFH98H9WE8\r\n
Vanger 6:e5ea200c66c3 255 //-----END CERTIFICATE-----\r\n
Vanger 6:e5ea200c66c3 256 res = http->addRootCACertificate(CERTIFICATES);
Vanger 6:e5ea200c66c3 257 if(res != HTTP_OK) {
Vanger 6:e5ea200c66c3 258 logError("Failed to load CERTIFICATES");
Vanger 6:e5ea200c66c3 259 }
Vanger 6:e5ea200c66c3 260
Vanger 6:e5ea200c66c3 261 //Call with argument VERIFY_PEER to turn on SSL security (HTTPS)
Vanger 6:e5ea200c66c3 262 //Default argument is VERIFY_NONE which operates as without SSL security (HTTP)
Vanger 6:e5ea200c66c3 263 http->setPeerVerification(VERIFY_PEER);
Vanger 6:e5ea200c66c3 264
Vanger 6:e5ea200c66c3 265 //Format HTTPS GET request
Vanger 6:e5ea200c66c3 266 url = secure_url + url_get;
Vanger 6:e5ea200c66c3 267
Vanger 6:e5ea200c66c3 268 //Send HTTPS GET request
Vanger 6:e5ea200c66c3 269 for (int i = 0; i < 10; i++) {
Vanger 6:e5ea200c66c3 270 if(http->get(url.c_str(), receive, 5000) == HTTP_OK) {
Vanger 6:e5ea200c66c3 271 logInfo("HTTPS GET succeeded\n%s", rbuf);
Vanger 6:e5ea200c66c3 272 break;
Vanger 6:e5ea200c66c3 273 }
Vanger 6:e5ea200c66c3 274 if (i >= 10) {
Vanger 6:e5ea200c66c3 275 logError("HTTPS GET failed");
Vanger 6:e5ea200c66c3 276 }
Vanger 6:e5ea200c66c3 277 wait(1);
Vanger 6:e5ea200c66c3 278 }
Vanger 6:e5ea200c66c3 279
Vanger 6:e5ea200c66c3 280 //Format HTTPS POST request
Vanger 6:e5ea200c66c3 281 url = secure_url + url_post;
Vanger 6:e5ea200c66c3 282
Vanger 6:e5ea200c66c3 283 //Create data to send
Vanger 6:e5ea200c66c3 284 char sbuf[60] = "Hello World! We are testing the MTSAS HTTPS Example Program";
Vanger 6:e5ea200c66c3 285 HTTPText send = HTTPText(sbuf);
Vanger 6:e5ea200c66c3 286
Vanger 6:e5ea200c66c3 287 //Send HTTPS POST request
Vanger 6:e5ea200c66c3 288 for (int i = 0; i < 10; i++) {
Vanger 6:e5ea200c66c3 289 if(http->post(url.c_str(), send, receive, 5000) == HTTP_OK) {
Vanger 6:e5ea200c66c3 290 logInfo("HTTPS POST succeeded\n%s", rbuf);
Vanger 6:e5ea200c66c3 291 break;
Vanger 6:e5ea200c66c3 292 }
Vanger 6:e5ea200c66c3 293 if (i >= 10) {
Vanger 6:e5ea200c66c3 294 logError("HTTPS POST failed");
Vanger 6:e5ea200c66c3 295 }
Vanger 6:e5ea200c66c3 296 wait(1);
Vanger 6:e5ea200c66c3 297 }
Vanger 6:e5ea200c66c3 298
Vanger 6:e5ea200c66c3 299 //Basic authentication test values, can be modified
Vanger 6:e5ea200c66c3 300 //to any test username and password. Format for url_usr_pw: /<user>/<password>
Vanger 6:e5ea200c66c3 301 string url_usr_pw = "/Bob/123";
Vanger 6:e5ea200c66c3 302 const char user[] = "Bob",pw[] = "123";
Vanger 6:e5ea200c66c3 303
Vanger 6:e5ea200c66c3 304 //Format HTTPS basic authentication GET request
Vanger 6:e5ea200c66c3 305 url = secure_url + url_auth + url_usr_pw;
Vanger 6:e5ea200c66c3 306
Vanger 6:e5ea200c66c3 307 res = http->basicAuth(user,pw);
Vanger 6:e5ea200c66c3 308 logTrace("Set username and password?: %s",httpResToStr(res));
Vanger 6:e5ea200c66c3 309
Vanger 6:e5ea200c66c3 310 res = http->get(url.c_str(), receive);
Vanger 6:e5ea200c66c3 311 if(res == HTTP_OK) {
Vanger 6:e5ea200c66c3 312 logInfo("HTTPS Authenticated GET succeeded [%s]", rbuf);
Vanger 6:e5ea200c66c3 313 } else {
Vanger 6:e5ea200c66c3 314 logInfo("HTTPS Authenticated GET failed [%s]", httpResToStr(res));
Vanger 6:e5ea200c66c3 315 }
Vanger 6:e5ea200c66c3 316
Vanger 6:e5ea200c66c3 317 res = http->basicAuth(NULL,NULL);
Vanger 6:e5ea200c66c3 318 logTrace("Reset username and password?: %s",httpResToStr(res));
Vanger 6:e5ea200c66c3 319
Vanger 6:e5ea200c66c3 320 return 0;
Vanger 6:e5ea200c66c3 321 }
Vanger 6:e5ea200c66c3 322
Vanger 6:e5ea200c66c3 323 char * httpResToStr(HTTPResult res) {
Vanger 6:e5ea200c66c3 324 switch(res) {
Vanger 6:e5ea200c66c3 325 case HTTP_PROCESSING:
Vanger 6:e5ea200c66c3 326 return "HTTP_PROCESSING";
Vanger 6:e5ea200c66c3 327 case HTTP_PARSE:
Vanger 6:e5ea200c66c3 328 return "HTTP_PARSE";
Vanger 6:e5ea200c66c3 329 case HTTP_DNS:
Vanger 6:e5ea200c66c3 330 return "HTTP_DNS";
Vanger 6:e5ea200c66c3 331 case HTTP_PRTCL:
Vanger 6:e5ea200c66c3 332 return "HTTP_PRTCL";
Vanger 6:e5ea200c66c3 333 case HTTP_NOTFOUND:
Vanger 6:e5ea200c66c3 334 return "HTTP_NOTFOUND";
Vanger 6:e5ea200c66c3 335 case HTTP_REFUSED:
Vanger 6:e5ea200c66c3 336 return "HTTP_REFUSED";
Vanger 6:e5ea200c66c3 337 case HTTP_ERROR:
Vanger 6:e5ea200c66c3 338 return "HTTP_ERROR";
Vanger 6:e5ea200c66c3 339 case HTTP_TIMEOUT:
Vanger 6:e5ea200c66c3 340 return "HTTP_TIMEOUT";
Vanger 6:e5ea200c66c3 341 case HTTP_CONN:
Vanger 6:e5ea200c66c3 342 return "HTTP_CONN";
Vanger 6:e5ea200c66c3 343 case HTTP_CLOSED:
Vanger 6:e5ea200c66c3 344 return "HTTP_CLOSED";
Vanger 6:e5ea200c66c3 345 case HTTP_REDIRECT:
Vanger 6:e5ea200c66c3 346 return "HTTP_REDIRECT";
Vanger 6:e5ea200c66c3 347 case HTTP_OK:
Vanger 6:e5ea200c66c3 348 return "HTTP_OK";
Vanger 6:e5ea200c66c3 349 default:
Vanger 6:e5ea200c66c3 350 return "HTTP Result unknown";
Vanger 6:e5ea200c66c3 351 }
Vanger 6:e5ea200c66c3 352 }
Vanger 6:e5ea200c66c3 353 //End of the HTTPS code
Vanger 6:e5ea200c66c3 354 */