Small wrapper of TLS_cyassl
Dependents: HTTPSClientExample2
This is a small wrapper of TLS_cyassl to easily sends GET requests over HTTPS. This library is used in the same way as HTTPSClient_axTLS.
Import programHTTPSClientExample2
This example shows how to use the TLS_cyassl library. It connects to twitter.com and downloads a webpage.
Diff: HTTPSClient.h
- Revision:
- 0:1abc65a0f50b
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/HTTPSClient.h Mon Sep 16 10:39:01 2013 +0000 @@ -0,0 +1,87 @@ +#ifndef HTTPS_CLIENT_H +#define HTTPS_CLIENT_H + +#include <string> +#include "TLSConnection.h" +#include "HTTPHeader.h" + + +/** Simple wrapper of TLS library to send GET request to + a server and receive some web pages. +*/ +class HTTPSClient +{ +public : + + HTTPSClient(); + + /** Connnect to the given host. + + \param host A valid hostname (e.g. "mbed.org") + \return True if the connection was established with + success, false otherwise. + + \note If the client is already connected, it returns false. + */ + bool connect(const std::string& host); + + /** Send a GET request to the host. + + \param path + \param hdr A pointer to an HTTPHeader object. + \return Returns 0 if the request was sent with success, + or -1 if an error occured. + */ + int get(const std::string& path, HTTPHeader *hdr); + + /** Send a get request and reads (partially) the body + + \param path + \param hdr A pointer to an HTTPHeader object. + \param data A pointer to some buffer + \param length Maximum number of bytes to read + \return Number of bytes stored in data in range 0..length, or -1 + if an error occured. + + \note To check whether this request is sent with success, you must check + the status of the HTTPHeader and the value of the integer returned by this + function. + + Example: + @code + // Assuming that an HTTPSClient object c is connected to a host + HTTPHeader hdr; + char buffer[256]; + int n = c.get("/", &hdr, buffer, 256); + if(n > 0 && hdr.getStatus() == HTTP_OK) // GET request sent with success + { + // do some stuff here.. + } + else + printf("Failed to send get request\n"); + @endcode + + + \note If hdr is null, this function does not send anything and directly writes + bytes in data. This is particularly useful if you expect large answers (such as + webpages) from the host. + */ + int get(const std::string& path, HTTPHeader *hdr, char *data, int length); + + /** Disconnect from host + + \return True if the client disconnected with success, false otherwise. + */ + bool disconnect(); + +private : + + std::string readLine(); + HTTPHeader readHeader(); + + TLSConnection _con; + +}; + +#endif +