Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of http-example by
main.cpp
00001 #include "select-demo.h" 00002 00003 #if DEMO == DEMO_HTTP_SOCKET_REUSE 00004 00005 #include "mbed.h" 00006 #include "easy-connect.h" 00007 #include "http_request.h" 00008 00009 void dump_response(HttpResponse* res) { 00010 printf("Status: %d - %s\n", res->get_status_code(), res->get_status_message().c_str()); 00011 00012 printf("Headers:\n"); 00013 for (size_t ix = 0; ix < res->get_headers_length(); ix++) { 00014 printf("\t%s: %s\n", res->get_headers_fields()[ix]->c_str(), res->get_headers_values()[ix]->c_str()); 00015 } 00016 printf("\nBody (%d bytes):\n\n%s\n", res->get_body_length(), res->get_body_as_string().c_str()); 00017 } 00018 00019 int main() { 00020 // Connect to the network (see mbed_app.json for the connectivity method used) 00021 NetworkInterface* network = easy_connect(true); 00022 if (!network) { 00023 printf("Cannot connect to the network, see serial output"); 00024 return 1; 00025 } 00026 00027 // Create a TCP socket 00028 printf("\n----- Setting up TCP connection -----\n"); 00029 00030 TCPSocket* socket = new TCPSocket(); 00031 nsapi_error_t open_result = socket->open(network); 00032 if (open_result != 0) { 00033 printf("Opening TCPSocket failed... %d\n", open_result); 00034 return 1; 00035 } 00036 00037 nsapi_error_t connect_result = socket->connect("httpbin.org", 80); 00038 if (connect_result != 0) { 00039 printf("Connecting over TCPSocket failed... %d\n", connect_result); 00040 return 1; 00041 } 00042 00043 printf("Connected over TCP to httpbin.org:80\n"); 00044 00045 // Do a GET request to httpbin.org 00046 { 00047 HttpRequest* get_req = new HttpRequest(socket, HTTP_GET, "http://httpbin.org/status/418"); 00048 00049 // By default the body is automatically parsed and stored in a string, this is memory heavy. 00050 // To receive chunked response, pass in a callback as third parameter to 'send'. 00051 HttpResponse* get_res = get_req->send(); 00052 if (!get_res) { 00053 printf("HttpRequest failed (error code %d)\n", get_req->get_error()); 00054 return 1; 00055 } 00056 00057 printf("\n----- HTTP GET response -----\n"); 00058 dump_response(get_res); 00059 00060 delete get_req; 00061 } 00062 00063 // POST request to httpbin.org 00064 { 00065 HttpRequest* post_req = new HttpRequest(socket, HTTP_POST, "http://httpbin.org/post"); 00066 post_req->set_header("Content-Type", "application/json"); 00067 00068 const char body[] = "{\"hello\":\"world\"}"; 00069 00070 HttpResponse* post_res = post_req->send(body, strlen(body)); 00071 if (!post_res) { 00072 printf("HttpRequest failed (error code %d)\n", post_req->get_error()); 00073 return 1; 00074 } 00075 00076 printf("\n----- HTTP POST response -----\n"); 00077 dump_response(post_res); 00078 00079 delete post_req; 00080 } 00081 00082 delete socket; 00083 00084 wait(osWaitForever); 00085 } 00086 00087 #endif
Generated on Fri Jul 15 2022 13:51:28 by
1.7.2
