This is a quick example of a simple HTTP client program using the network-socket API that is provided as a part of mbed-os. The program brings up an underlying network interface, and uses it to perform an HTTP transaction over a TCPSocket.
main.cpp
- Committer:
- mbed_official
- Date:
- 2016-10-26
- Revision:
- 0:17bd84fc5087
- Child:
- 5:3e952c60d705
File content as of revision 0:17bd84fc5087:
#include "mbed.h" #include "TCPSocket.h" #define STR(x) STR2(x) #define STR2(x) #x // Socket demo void http_demo(NetworkInterface *net) { TCPSocket socket; // Show the network address const char *ip = net->get_ip_address(); printf("IP address is: %s\n", ip ? ip : "No IP"); // Open a socket on the network interface, and create a TCP connection to mbed.org socket.open(net); socket.connect("developer.mbed.org", 80); // Send a simple http request char sbuffer[] = "GET / HTTP/1.1\r\nHost: developer.mbed.org\r\n\r\n"; int scount = socket.send(sbuffer, sizeof sbuffer); printf("sent %d [%.*s]\r\n", scount, strstr(sbuffer, "\r\n")-sbuffer, sbuffer); // Recieve a simple http response and print out the response line char rbuffer[64]; int rcount = socket.recv(rbuffer, sizeof rbuffer); printf("recv %d [%.*s]\r\n", rcount, strstr(rbuffer, "\r\n")-rbuffer, rbuffer); // Close the socket to return its memory and bring down the network interface socket.close(); } // Example with the ESP8266 interface #if defined(MBED_DEMO_WIFI) #include "ESP8266Interface.h" ESP8266Interface wifi(D1, D0); int main() { // Brings up the esp8266 printf("ESP8266 socket example\n"); wifi.connect(STR(MBED_DEMO_WIFI_SSID), STR(MBED_DEMO_WIFI_PASS)); // Invoke the demo http_demo(&wifi); // Brings down the esp8266 wifi.disconnect(); printf("Done\n"); } // Example using the builtin ethernet interface #else #include "EthernetInterface.h" EthernetInterface eth; int main() { // Brings up the ethernet interface printf("Ethernet socket example\n"); eth.connect(); // Invoke the demo http_demo(ð); // Brings down the ethernet interface eth.disconnect(); printf("Done\n"); } #endif