HTTP Client test with Ethernet

Dependencies:   mbed EthernetNetworkLib rtos_net HTTPClientLib

Committer:
donatien
Date:
Thu May 24 16:30:41 2012 +0000
Revision:
0:4e21533b9bbf
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
donatien 0:4e21533b9bbf 1 /* net_3g_basic_http_test.cpp */
donatien 0:4e21533b9bbf 2 /*
donatien 0:4e21533b9bbf 3 Copyright (C) 2012 ARM Limited.
donatien 0:4e21533b9bbf 4
donatien 0:4e21533b9bbf 5 Permission is hereby granted, free of charge, to any person obtaining a copy of
donatien 0:4e21533b9bbf 6 this software and associated documentation files (the "Software"), to deal in
donatien 0:4e21533b9bbf 7 the Software without restriction, including without limitation the rights to
donatien 0:4e21533b9bbf 8 use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
donatien 0:4e21533b9bbf 9 of the Software, and to permit persons to whom the Software is furnished to do
donatien 0:4e21533b9bbf 10 so, subject to the following conditions:
donatien 0:4e21533b9bbf 11
donatien 0:4e21533b9bbf 12 The above copyright notice and this permission notice shall be included in all
donatien 0:4e21533b9bbf 13 copies or substantial portions of the Software.
donatien 0:4e21533b9bbf 14
donatien 0:4e21533b9bbf 15 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
donatien 0:4e21533b9bbf 16 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
donatien 0:4e21533b9bbf 17 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
donatien 0:4e21533b9bbf 18 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
donatien 0:4e21533b9bbf 19 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
donatien 0:4e21533b9bbf 20 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
donatien 0:4e21533b9bbf 21 SOFTWARE.
donatien 0:4e21533b9bbf 22 */
donatien 0:4e21533b9bbf 23
donatien 0:4e21533b9bbf 24 #define __DEBUG__ 4 //Maximum verbosity
donatien 0:4e21533b9bbf 25 #ifndef __MODULE__
donatien 0:4e21533b9bbf 26 #define __MODULE__ "net_eth_basic_http_test.cpp"
donatien 0:4e21533b9bbf 27 #endif
donatien 0:4e21533b9bbf 28
donatien 0:4e21533b9bbf 29 #include "core/fwk.h"
donatien 0:4e21533b9bbf 30 #include "mbed.h"
donatien 0:4e21533b9bbf 31
donatien 0:4e21533b9bbf 32 #include "rtos.h"
donatien 0:4e21533b9bbf 33
donatien 0:4e21533b9bbf 34 #include "if/EthernetNetwork.h"
donatien 0:4e21533b9bbf 35 #include "HTTPClient.h"
donatien 0:4e21533b9bbf 36
donatien 0:4e21533b9bbf 37 DigitalOut led1(LED1);
donatien 0:4e21533b9bbf 38 DigitalOut led2(LED2);
donatien 0:4e21533b9bbf 39 DigitalOut led3(LED3);
donatien 0:4e21533b9bbf 40 DigitalOut led4(LED4);
donatien 0:4e21533b9bbf 41 void notify(bool a, bool b, bool c)
donatien 0:4e21533b9bbf 42 {
donatien 0:4e21533b9bbf 43 led1 = a;
donatien 0:4e21533b9bbf 44 led2 = b;
donatien 0:4e21533b9bbf 45 led3 = c;
donatien 0:4e21533b9bbf 46 }
donatien 0:4e21533b9bbf 47
donatien 0:4e21533b9bbf 48 extern "C" void HardFault_Handler()
donatien 0:4e21533b9bbf 49 {
donatien 0:4e21533b9bbf 50 error("Hard Fault!\n");
donatien 0:4e21533b9bbf 51 }
donatien 0:4e21533b9bbf 52
donatien 0:4e21533b9bbf 53 void test(void const*)
donatien 0:4e21533b9bbf 54 {
donatien 0:4e21533b9bbf 55 EthernetNetwork eth;
donatien 0:4e21533b9bbf 56 HTTPClient http;
donatien 0:4e21533b9bbf 57 char str[512];
donatien 0:4e21533b9bbf 58
donatien 0:4e21533b9bbf 59 DBG("Hello!");
donatien 0:4e21533b9bbf 60
donatien 0:4e21533b9bbf 61 int count = 0;
donatien 0:4e21533b9bbf 62 eth.init(); //Use DHCP
donatien 0:4e21533b9bbf 63
donatien 0:4e21533b9bbf 64 start:
donatien 0:4e21533b9bbf 65 count++;
donatien 0:4e21533b9bbf 66 DBG("iteration #%d", count);
donatien 0:4e21533b9bbf 67
donatien 0:4e21533b9bbf 68 notify(0, 1, 1);
donatien 0:4e21533b9bbf 69 int ret = eth.connect();
donatien 0:4e21533b9bbf 70 notify(0, 1, 0);
donatien 0:4e21533b9bbf 71 if (ret == OK)
donatien 0:4e21533b9bbf 72 {
donatien 0:4e21533b9bbf 73 DBG("Trying to fetch page...");
donatien 0:4e21533b9bbf 74 ret = http.get("http://mbed.org/media/uploads/donatien/hello.txt", str, 128);
donatien 0:4e21533b9bbf 75 if (ret == OK)
donatien 0:4e21533b9bbf 76 {
donatien 0:4e21533b9bbf 77 DBG("Page fetched successfully - read %d characters", strlen(str));
donatien 0:4e21533b9bbf 78 DBG("Result: %s", str);
donatien 0:4e21533b9bbf 79 }
donatien 0:4e21533b9bbf 80 else
donatien 0:4e21533b9bbf 81 {
donatien 0:4e21533b9bbf 82 WARN("Error - ret = %d - HTTP return code = %d", ret, http.getHTTPResponseCode());
donatien 0:4e21533b9bbf 83 }
donatien 0:4e21533b9bbf 84
donatien 0:4e21533b9bbf 85 HTTPMap map;
donatien 0:4e21533b9bbf 86 HTTPText text(str, 512);
donatien 0:4e21533b9bbf 87 map.put("Hello", "World");
donatien 0:4e21533b9bbf 88 map.put("test", "1234");
donatien 0:4e21533b9bbf 89 DBG("Trying to post data...");
donatien 0:4e21533b9bbf 90 ret = http.post("http://httpbin.org/post", map, &text);
donatien 0:4e21533b9bbf 91 if (ret == OK)
donatien 0:4e21533b9bbf 92 {
donatien 0:4e21533b9bbf 93 DBG("Executed POST successfully - read %d characters", strlen(str));
donatien 0:4e21533b9bbf 94 DBG("Result: %s", str);
donatien 0:4e21533b9bbf 95 }
donatien 0:4e21533b9bbf 96 else
donatien 0:4e21533b9bbf 97 {
donatien 0:4e21533b9bbf 98 WARN("Error - ret = %d - HTTP return code = %d", ret, http.getHTTPResponseCode());
donatien 0:4e21533b9bbf 99 }
donatien 0:4e21533b9bbf 100 }
donatien 0:4e21533b9bbf 101 eth.disconnect();
donatien 0:4e21533b9bbf 102 DBG("Disconnected");
donatien 0:4e21533b9bbf 103
donatien 0:4e21533b9bbf 104 notify(1, 1, 1);
donatien 0:4e21533b9bbf 105
donatien 0:4e21533b9bbf 106 goto start;
donatien 0:4e21533b9bbf 107
donatien 0:4e21533b9bbf 108 while (1)
donatien 0:4e21533b9bbf 109 {
donatien 0:4e21533b9bbf 110 Thread::wait(100);
donatien 0:4e21533b9bbf 111 }
donatien 0:4e21533b9bbf 112 }
donatien 0:4e21533b9bbf 113
donatien 0:4e21533b9bbf 114 void keepAlive(void const*)
donatien 0:4e21533b9bbf 115 {
donatien 0:4e21533b9bbf 116 while (1)
donatien 0:4e21533b9bbf 117 {
donatien 0:4e21533b9bbf 118 led1 = !led1;
donatien 0:4e21533b9bbf 119 Thread::wait(500);
donatien 0:4e21533b9bbf 120 }
donatien 0:4e21533b9bbf 121 }
donatien 0:4e21533b9bbf 122
donatien 0:4e21533b9bbf 123 void tick()
donatien 0:4e21533b9bbf 124 {
donatien 0:4e21533b9bbf 125 led4 = !led4;
donatien 0:4e21533b9bbf 126 }
donatien 0:4e21533b9bbf 127
donatien 0:4e21533b9bbf 128 int main()
donatien 0:4e21533b9bbf 129 {
donatien 0:4e21533b9bbf 130 Ticker t;
donatien 0:4e21533b9bbf 131 t.attach(tick, 1);
donatien 0:4e21533b9bbf 132 DBG_INIT();
donatien 0:4e21533b9bbf 133 notify(1, 0, 0);
donatien 0:4e21533b9bbf 134
donatien 0:4e21533b9bbf 135 Thread testTask(test, NULL, osPriorityNormal, 1024 * 4);
donatien 0:4e21533b9bbf 136 keepAlive(NULL);
donatien 0:4e21533b9bbf 137
donatien 0:4e21533b9bbf 138 return 0;
donatien 0:4e21533b9bbf 139 }