A http client sample program.
Dependencies: NyFileSystems libMiMic mbed-rtos mbed
Fork of TcpSocketClientSamlpe by
main.cpp@26:f58dc24e2c1b, 2013-10-03 (annotated)
- Committer:
- nyatla
- Date:
- Thu Oct 03 04:54:29 2013 +0000
- Revision:
- 26:f58dc24e2c1b
- Parent:
- 25:1a4f620b7af6
- Child:
- 28:dd350a9a5221
firstcommit
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 | 23:6340bfc0bfe3 | 16 | NetConfig cfg; //create network configulation |
nyatla | 19:66d729b94d16 | 17 | Net* net; |
nyatla | 19:66d729b94d16 | 18 | |
nyatla | 25:1a4f620b7af6 | 19 | DigitalOut led1(LED1); |
nyatla | 25:1a4f620b7af6 | 20 | DigitalOut led2(LED2); |
nyatla | 25:1a4f620b7af6 | 21 | DigitalOut led3(LED3); |
nyatla | 25:1a4f620b7af6 | 22 | DigitalOut led4(LED4); |
nyatla | 0:ec1e45489427 | 23 | |
nyatla | 12:218b57d9a6d4 | 24 | |
nyatla | 0:ec1e45489427 | 25 | int main() |
nyatla | 0:ec1e45489427 | 26 | { |
nyatla | 19:66d729b94d16 | 27 | net=new Net();//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 | 25:1a4f620b7af6 | 39 | |
nyatla | 25:1a4f620b7af6 | 40 | //Start network |
nyatla | 19:66d729b94d16 | 41 | net->start(cfg); |
nyatla | 25:1a4f620b7af6 | 42 | |
nyatla | 26:f58dc24e2c1b | 43 | if(http.connect(IpAddr(192,168,128,195),80)){ |
nyatla | 26:f58dc24e2c1b | 44 | if(http.sendMethod(HttpClient::HTTP_GET,"/mimic/")){ |
nyatla | 26:f58dc24e2c1b | 45 | FILE *fp=fopen("/local/out.txt", "w"); |
nyatla | 26:f58dc24e2c1b | 46 | if(fp!=NULL){ |
nyatla | 26:f58dc24e2c1b | 47 | int s=http.getStatus(); |
nyatla | 26:f58dc24e2c1b | 48 | fprintf(fp, "Status:%d\n",s); |
nyatla | 26:f58dc24e2c1b | 49 | if(s==200){ |
nyatla | 26:f58dc24e2c1b | 50 | for(;;){ |
nyatla | 26:f58dc24e2c1b | 51 | short l; |
nyatla | 26:f58dc24e2c1b | 52 | char b[32]; |
nyatla | 26:f58dc24e2c1b | 53 | if(!http.read(b,32,l)){ |
nyatla | 26:f58dc24e2c1b | 54 | //Error |
nyatla | 26:f58dc24e2c1b | 55 | led1=1; |
nyatla | 26:f58dc24e2c1b | 56 | break; |
nyatla | 26:f58dc24e2c1b | 57 | } |
nyatla | 26:f58dc24e2c1b | 58 | if(fwrite(b,1,l,fp)<l){ |
nyatla | 26:f58dc24e2c1b | 59 | //EOS |
nyatla | 26:f58dc24e2c1b | 60 | led2=1; |
nyatla | 26:f58dc24e2c1b | 61 | break; |
nyatla | 26:f58dc24e2c1b | 62 | } |
nyatla | 26:f58dc24e2c1b | 63 | if(l==0){ |
nyatla | 26:f58dc24e2c1b | 64 | //EOS |
nyatla | 26:f58dc24e2c1b | 65 | led3=1; |
nyatla | 26:f58dc24e2c1b | 66 | break; |
nyatla | 26:f58dc24e2c1b | 67 | } |
nyatla | 26:f58dc24e2c1b | 68 | } |
nyatla | 26:f58dc24e2c1b | 69 | } |
nyatla | 26:f58dc24e2c1b | 70 | fclose(fp); |
nyatla | 25:1a4f620b7af6 | 71 | } |
nyatla | 25:1a4f620b7af6 | 72 | } |
nyatla | 26:f58dc24e2c1b | 73 | http.close(); |
nyatla | 26:f58dc24e2c1b | 74 | } |
nyatla | 26:f58dc24e2c1b | 75 | for(int c=0;;c=(c+1)%2){ |
nyatla | 26:f58dc24e2c1b | 76 | led4=c; |
nyatla | 26:f58dc24e2c1b | 77 | Thread::wait(500); |
nyatla | 25:1a4f620b7af6 | 78 | } |
nyatla | 0:ec1e45489427 | 79 | return 0; |
nyatla | 0:ec1e45489427 | 80 | } |
nyatla | 25:1a4f620b7af6 | 81 |