Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
sdk:httpget [2015/07/02 13:02]
fachet created
sdk:httpget [2015/07/02 14:15] (current)
fachet
Line 7: Line 7:
 if (send(s, "GET / HTTP/​1.0\r\n\r\n"​) == -1) exit(3); if (send(s, "GET / HTTP/​1.0\r\n\r\n"​) == -1) exit(3);
 if ((r = recv(s)) == NULL) exit(4); if ((r = recv(s)) == NULL) exit(4);
-printf("​%s",​ r);+printf("​%s\n", r); 
 +if (!strstr(r, "​HTTP/​1.1 200 OK")) { 
 +   i = substr(r, strstr(r, "IP Address: ") + 12, strlen(r));​ 
 +   ​printf("​IP Address: %s\n", left(i, strstr(i, "</​body>"​)));​ 
 +}
 close(s); close(s);
 +exit(0);
 </​code>​ </​code>​
  
 <code c Output> <code c Output>
- 
 HTTP/1.1 200 OK HTTP/1.1 200 OK
 Content-Type:​ text/html Content-Type:​ text/html
Line 23: Line 27:
 <​html><​head><​title>​Current IP Check</​title></​head><​body>​Current IP Address: 89.12.4.18</​body></​html>​ <​html><​head><​title>​Current IP Check</​title></​head><​body>​Current IP Address: 89.12.4.18</​body></​html>​
  
 +IP Address: 89.12.4.18
 +</​code>​
 +  ​
 +<code c httpget2.are>​
 +To get from or post data to a web server you can easily use standard sockets.
 +
 +if ((so = socket(AF_INET,​ SOCK_STREAM,​ IPPROTO_TCP)) < 0) exit(1);
 +if (connect(so,​ "​checkip.dyndns.com",​ 80) < 0) exit(2);
 +if (send(so, "GET / HTTP/​1.0\r\n\r\n"​) == -1) exit(3);
 +if ((s = recv(so)) == NULL) exit(4);
 + 
 +printf("​RESPONSE:​ <​%s>​\n",​ left(s, p = strstr(s, "​\n"​)));​
 +s = right(s, strlen(s) - p - 1);
 + 
 +while ((p = strchr(s, "​\n"​)) > 0) {
 +  h = left(s, p); 
 +  hp = strstr(h, ": "​); ​
 +  l = left(h, hp); 
 +  r = substr(h, hp + 2, strlen(s)-hp-2-1);​
 +  printf("​HEADER:​ <%s> value <​%s>​\n",​ l, r);
 +  s = right(s, strlen(s) - p - 1);
 +}
 +printf("​BODY:​ %s\n", s);
 +close(s);
 +exit(0);
 </​code>​ </​code>​