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.
main.cpp@0:d6829ea0374e, 2013-09-04 (annotated)
- Committer:
- feb11
- Date:
- Wed Sep 04 13:40:42 2013 +0000
- Revision:
- 0:d6829ea0374e
- Child:
- 1:ff73b1545aaa
initial import
Who changed what in which revision?
User | Revision | Line number | New 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 | 0:d6829ea0374e | 6 | const char host[] = "mbed.org"; |
feb11 | 0:d6829ea0374e | 7 | const char request[] = "/"; |
feb11 | 0:d6829ea0374e | 8 | LocalFileSystem local("local"); |
feb11 | 0:d6829ea0374e | 9 | |
feb11 | 0:d6829ea0374e | 10 | int main() |
feb11 | 0:d6829ea0374e | 11 | { |
feb11 | 0:d6829ea0374e | 12 | EthernetInterface eth; |
feb11 | 0:d6829ea0374e | 13 | if(eth.init() || eth.connect()) |
feb11 | 0:d6829ea0374e | 14 | { |
feb11 | 0:d6829ea0374e | 15 | printf("Error with EthernetInterface\n\r"); |
feb11 | 0:d6829ea0374e | 16 | return -1; |
feb11 | 0:d6829ea0374e | 17 | } |
feb11 | 0:d6829ea0374e | 18 | |
feb11 | 0:d6829ea0374e | 19 | printf("IP address is %s\n\r", eth.getIPAddress()); |
feb11 | 0:d6829ea0374e | 20 | |
feb11 | 0:d6829ea0374e | 21 | CertificateManager::add("/local/cert1.der"); |
feb11 | 0:d6829ea0374e | 22 | CertificateManager::add("/local/cert2.der"); |
feb11 | 0:d6829ea0374e | 23 | CertificateManager::add("/local/cert3.der"); |
feb11 | 0:d6829ea0374e | 24 | CertificateManager::add("/local/cert4.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 | 0:d6829ea0374e | 37 | |
feb11 | 0:d6829ea0374e | 38 | char buffer[256]; |
feb11 | 0:d6829ea0374e | 39 | int bufferLength = sizeof(buffer)-1; |
feb11 | 0:d6829ea0374e | 40 | HTTPHeader header; |
feb11 | 0:d6829ea0374e | 41 | int read = client.get(request, &header, buffer, bufferLength); |
feb11 | 0:d6829ea0374e | 42 | if(header.getStatus() != HTTP_OK || read < 0) |
feb11 | 0:d6829ea0374e | 43 | { |
feb11 | 0:d6829ea0374e | 44 | printf("Failed sending GET request : %s to %s", request, host); |
feb11 | 0:d6829ea0374e | 45 | return -1; |
feb11 | 0:d6829ea0374e | 46 | } |
feb11 | 0:d6829ea0374e | 47 | |
feb11 | 0:d6829ea0374e | 48 | buffer[read] ='\0'; |
feb11 | 0:d6829ea0374e | 49 | printf("%s", buffer); |
feb11 | 0:d6829ea0374e | 50 | int totalRead = read; |
feb11 | 0:d6829ea0374e | 51 | while(totalRead < header.getBodyLength()) |
feb11 | 0:d6829ea0374e | 52 | { |
feb11 | 0:d6829ea0374e | 53 | if(bufferLength > header.getBodyLength() - totalRead) |
feb11 | 0:d6829ea0374e | 54 | bufferLength = header.getBodyLength() - totalRead; |
feb11 | 0:d6829ea0374e | 55 | |
feb11 | 0:d6829ea0374e | 56 | read = client.get("", NULL, buffer, bufferLength); |
feb11 | 0:d6829ea0374e | 57 | buffer[read] ='\0'; |
feb11 | 0:d6829ea0374e | 58 | printf("%s", buffer); |
feb11 | 0:d6829ea0374e | 59 | totalRead += read; |
feb11 | 0:d6829ea0374e | 60 | } |
feb11 | 0:d6829ea0374e | 61 | |
feb11 | 0:d6829ea0374e | 62 | printf("Disconnecting from %s\n", host); |
feb11 | 0:d6829ea0374e | 63 | client.disconnect(); |
feb11 | 0:d6829ea0374e | 64 | eth.disconnect(); |
feb11 | 0:d6829ea0374e | 65 | |
feb11 | 0:d6829ea0374e | 66 | return 0; |
feb11 | 0:d6829ea0374e | 67 | } |