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] – created fachetsdk: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>