A http client sample program.

Dependencies:   NyFileSystems libMiMic mbed-rtos mbed

Fork of TcpSocketClientSamlpe by Ryo Iizuka

Committer:
nyatla
Date:
Tue Sep 15 09:28:25 2015 +0000
Revision:
28:dd350a9a5221
Parent:
26:f58dc24e2c1b
update libMiMic

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nyatla 4:0a280ed0a848 1 /**
nyatla 20:4b0b449ddb12 2 * @file
nyatla 25:1a4f620b7af6 3 * TCP client socket sample.<br/>
nyatla 25:1a4f620b7af6 4 * This program is to test of TCP client.
nyatla 25:1a4f620b7af6 5 * Connect to a TCP server, and send back the received data as is.
nyatla 20:4b0b449ddb12 6 *
nyatla 4:0a280ed0a848 7 */
nyatla 5:6a2a1644ea2c 8 #include "mbed.h"
nyatla 19:66d729b94d16 9 #include "rtos.h"
nyatla 5:6a2a1644ea2c 10 #include "SDFileSystem.h"
nyatla 0:ec1e45489427 11 #include "mimic.h"
nyatla 10:80c05810f911 12 #include "utils/PlatformInfo.h"
nyatla 19:66d729b94d16 13 #include "fsdata.h"
nyatla 19:66d729b94d16 14
nyatla 26:f58dc24e2c1b 15 LocalFileSystem2 lf("local");
nyatla 19:66d729b94d16 16
nyatla 25:1a4f620b7af6 17 DigitalOut led1(LED1);
nyatla 25:1a4f620b7af6 18 DigitalOut led2(LED2);
nyatla 25:1a4f620b7af6 19 DigitalOut led3(LED3);
nyatla 25:1a4f620b7af6 20 DigitalOut led4(LED4);
nyatla 0:ec1e45489427 21
nyatla 28:dd350a9a5221 22 MiMicNetIf netif;
nyatla 28:dd350a9a5221 23 NetConfig cfg; //create network configulation with onchip-setting.
nyatla 12:218b57d9a6d4 24
nyatla 0:ec1e45489427 25 int main()
nyatla 0:ec1e45489427 26 {
nyatla 28:dd350a9a5221 27 Net net(netif);//Net constructor must be created after started RTOS
nyatla 25:1a4f620b7af6 28
nyatla 23:6340bfc0bfe3 29 // manual setting
nyatla 23:6340bfc0bfe3 30 cfg.setIpAddr(192,168,128,39);
nyatla 23:6340bfc0bfe3 31 cfg.setNetMask(255,255,255,0);
nyatla 23:6340bfc0bfe3 32 cfg.setGateway(192,168,128,254);
nyatla 26:f58dc24e2c1b 33 cfg.setSrvUPnP(false);
nyatla 26:f58dc24e2c1b 34 cfg.setSrvMdns(false);
nyatla 25:1a4f620b7af6 35
nyatla 26:f58dc24e2c1b 36 // Create http client.
nyatla 25:1a4f620b7af6 37 // Socket must create between "net.start" with "new Net()"
nyatla 26:f58dc24e2c1b 38 HttpClient http;
nyatla 28:dd350a9a5221 39 led1=1;
nyatla 25:1a4f620b7af6 40
nyatla 25:1a4f620b7af6 41 //Start network
nyatla 28:dd350a9a5221 42 net.start(cfg);
nyatla 28:dd350a9a5221 43 led2=2;
nyatla 28:dd350a9a5221 44 if(http.connect(IpAddr(192,168,128,1),80)){
nyatla 26:f58dc24e2c1b 45 if(http.sendMethod(HttpClient::HTTP_GET,"/mimic/")){
nyatla 26:f58dc24e2c1b 46 FILE *fp=fopen("/local/out.txt", "w");
nyatla 26:f58dc24e2c1b 47 if(fp!=NULL){
nyatla 26:f58dc24e2c1b 48 int s=http.getStatus();
nyatla 26:f58dc24e2c1b 49 fprintf(fp, "Status:%d\n",s);
nyatla 26:f58dc24e2c1b 50 if(s==200){
nyatla 26:f58dc24e2c1b 51 for(;;){
nyatla 26:f58dc24e2c1b 52 short l;
nyatla 26:f58dc24e2c1b 53 char b[32];
nyatla 26:f58dc24e2c1b 54 if(!http.read(b,32,l)){
nyatla 26:f58dc24e2c1b 55 //Error
nyatla 26:f58dc24e2c1b 56 led1=1;
nyatla 26:f58dc24e2c1b 57 break;
nyatla 26:f58dc24e2c1b 58 }
nyatla 26:f58dc24e2c1b 59 if(fwrite(b,1,l,fp)<l){
nyatla 26:f58dc24e2c1b 60 //EOS
nyatla 26:f58dc24e2c1b 61 led2=1;
nyatla 26:f58dc24e2c1b 62 break;
nyatla 26:f58dc24e2c1b 63 }
nyatla 26:f58dc24e2c1b 64 if(l==0){
nyatla 26:f58dc24e2c1b 65 //EOS
nyatla 26:f58dc24e2c1b 66 led3=1;
nyatla 26:f58dc24e2c1b 67 break;
nyatla 26:f58dc24e2c1b 68 }
nyatla 26:f58dc24e2c1b 69 }
nyatla 26:f58dc24e2c1b 70 }
nyatla 26:f58dc24e2c1b 71 fclose(fp);
nyatla 25:1a4f620b7af6 72 }
nyatla 25:1a4f620b7af6 73 }
nyatla 26:f58dc24e2c1b 74 http.close();
nyatla 26:f58dc24e2c1b 75 }
nyatla 28:dd350a9a5221 76 if(http.connect(IpAddr(192,168,128,254),80)){
nyatla 28:dd350a9a5221 77 if(http.sendMethod(HttpClient::HTTP_POST,"/mimic/")){
nyatla 28:dd350a9a5221 78 const char* DATA="{json}";
nyatla 28:dd350a9a5221 79 if(http.write(DATA,strlen(DATA))){
nyatla 28:dd350a9a5221 80 if(http.getStatus()==200){
nyatla 28:dd350a9a5221 81 char buf[256];
nyatla 28:dd350a9a5221 82 short len;
nyatla 28:dd350a9a5221 83 if(http.read(buf,256,len)){
nyatla 28:dd350a9a5221 84 printf("%.*s",len,buf);
nyatla 28:dd350a9a5221 85 }
nyatla 28:dd350a9a5221 86 }
nyatla 28:dd350a9a5221 87 }
nyatla 28:dd350a9a5221 88 }
nyatla 28:dd350a9a5221 89 http.close();
nyatla 28:dd350a9a5221 90 }
nyatla 26:f58dc24e2c1b 91 for(int c=0;;c=(c+1)%2){
nyatla 26:f58dc24e2c1b 92 led4=c;
nyatla 26:f58dc24e2c1b 93 Thread::wait(500);
nyatla 25:1a4f620b7af6 94 }
nyatla 0:ec1e45489427 95 return 0;
nyatla 0:ec1e45489427 96 }
nyatla 25:1a4f620b7af6 97