A http client sample program.
Dependencies: NyFileSystems libMiMic mbed-rtos mbed
Fork of TcpSocketClientSamlpe by
main.cpp@28:dd350a9a5221, 2015-09-15 (annotated)
- 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?
User | Revision | Line number | New 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 |