Connect to twitter.com and copies this webpage to a file.

Dependencies:   EthernetInterface3 HTTPSClient TLS_axTLS mbed-rtos mbed

This example shows how to use the HTTPSClient library by copying the content of this webpage to a file. Before running this program, you must download these certificates and copy them to the mbed. After running this program, a file called index.htm has been created and you can open it with your favorite browser to display the webpage the mbed have just downloaded.

Committer:
feb11
Date:
Thu Sep 05 10:36:51 2013 +0000
Revision:
1:ff73b1545aaa
Parent:
0:d6829ea0374e
Child:
2:e3807a060fa5
retrieve web page from twitter instead of mbed.org and output is written in a file instead of the terminal

Who changed what in which revision?

UserRevisionLine numberNew contents of line
feb11 0:d6829ea0374e 1 #include "mbed.h"
feb11 0:d6829ea0374e 2 #include "EthernetInterface.h"
feb11 0:d6829ea0374e 3 #include "CertificateManager.h"
feb11 0:d6829ea0374e 4 #include "HTTPSClient.h"
feb11 0:d6829ea0374e 5
feb11 1:ff73b1545aaa 6 const char host[] = "twitter.com";
feb11 1:ff73b1545aaa 7 const char request[] = "https://twitter.com/";
feb11 0:d6829ea0374e 8 LocalFileSystem local("local");
feb11 0:d6829ea0374e 9
feb11 0:d6829ea0374e 10 int main()
feb11 0:d6829ea0374e 11 {
feb11 1:ff73b1545aaa 12 set_time(1378370406);
feb11 0:d6829ea0374e 13 EthernetInterface eth;
feb11 0:d6829ea0374e 14 if(eth.init() || eth.connect())
feb11 0:d6829ea0374e 15 {
feb11 0:d6829ea0374e 16 printf("Error with EthernetInterface\n\r");
feb11 0:d6829ea0374e 17 return -1;
feb11 0:d6829ea0374e 18 }
feb11 0:d6829ea0374e 19
feb11 0:d6829ea0374e 20 printf("IP address is %s\n\r", eth.getIPAddress());
feb11 0:d6829ea0374e 21
feb11 0:d6829ea0374e 22 CertificateManager::add("/local/cert1.der");
feb11 0:d6829ea0374e 23 CertificateManager::add("/local/cert2.der");
feb11 0:d6829ea0374e 24 CertificateManager::add("/local/cert3.der");
feb11 0:d6829ea0374e 25 if(!CertificateManager::load(true))
feb11 0:d6829ea0374e 26 {
feb11 0:d6829ea0374e 27 printf("Failed to load certificates\n");
feb11 0:d6829ea0374e 28 return -1;
feb11 0:d6829ea0374e 29 }
feb11 0:d6829ea0374e 30
feb11 0:d6829ea0374e 31 HTTPSClient client;
feb11 0:d6829ea0374e 32 if(!client.connect(host))
feb11 0:d6829ea0374e 33 {
feb11 0:d6829ea0374e 34 printf("Failed to connect to %s\n", host);
feb11 0:d6829ea0374e 35 return -1;
feb11 0:d6829ea0374e 36 }
feb11 1:ff73b1545aaa 37 printf("Connected to %s !\n", host);
feb11 1:ff73b1545aaa 38 CertificateManager::clear();
feb11 0:d6829ea0374e 39
feb11 0:d6829ea0374e 40 char buffer[256];
feb11 0:d6829ea0374e 41 int bufferLength = sizeof(buffer)-1;
feb11 0:d6829ea0374e 42 HTTPHeader header;
feb11 0:d6829ea0374e 43 int read = client.get(request, &header, buffer, bufferLength);
feb11 0:d6829ea0374e 44 if(header.getStatus() != HTTP_OK || read < 0)
feb11 0:d6829ea0374e 45 {
feb11 0:d6829ea0374e 46 printf("Failed sending GET request : %s to %s", request, host);
feb11 0:d6829ea0374e 47 return -1;
feb11 0:d6829ea0374e 48 }
feb11 0:d6829ea0374e 49
feb11 1:ff73b1545aaa 50 FILE *fp = fopen("/local/index.htm", "w");
feb11 1:ff73b1545aaa 51 if(fp == NULL)
feb11 1:ff73b1545aaa 52 {
feb11 1:ff73b1545aaa 53 printf("Failed to open file index.htm\n");
feb11 1:ff73b1545aaa 54 return -1;
feb11 1:ff73b1545aaa 55 }
feb11 1:ff73b1545aaa 56 fwrite(buffer, 1, read, fp);
feb11 0:d6829ea0374e 57 int totalRead = read;
feb11 0:d6829ea0374e 58 while(totalRead < header.getBodyLength())
feb11 0:d6829ea0374e 59 {
feb11 0:d6829ea0374e 60 if(bufferLength > header.getBodyLength() - totalRead)
feb11 0:d6829ea0374e 61 bufferLength = header.getBodyLength() - totalRead;
feb11 0:d6829ea0374e 62
feb11 0:d6829ea0374e 63 read = client.get("", NULL, buffer, bufferLength);
feb11 1:ff73b1545aaa 64 if(read < 0)
feb11 1:ff73b1545aaa 65 {
feb11 1:ff73b1545aaa 66 printf("Error while getting data from %s\n", host);
feb11 1:ff73b1545aaa 67 return -1;
feb11 1:ff73b1545aaa 68 }
feb11 1:ff73b1545aaa 69 fwrite(buffer, 1, read, fp);
feb11 0:d6829ea0374e 70 totalRead += read;
feb11 0:d6829ea0374e 71 }
feb11 1:ff73b1545aaa 72 fclose(fp);
feb11 0:d6829ea0374e 73
feb11 0:d6829ea0374e 74 printf("Disconnecting from %s\n", host);
feb11 0:d6829ea0374e 75 client.disconnect();
feb11 0:d6829ea0374e 76 eth.disconnect();
feb11 0:d6829ea0374e 77
feb11 0:d6829ea0374e 78 return 0;
feb11 0:d6829ea0374e 79 }