Web services

To get from or post data to a web server you can easily use standard sockets.

httpget.are
if ((s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) exit(1);
if (connect(s, "checkip.dyndns.com", 80) < 0) exit(2);
if (send(s, "GET / HTTP/1.0\r\n\r\n") == -1) exit(3);
if ((r = recv(s)) == NULL) exit(4);
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);
exit(0);
Output
HTTP/1.1 200 OK
Content-Type: text/html
Server: DynDNS-CheckIP/1.0
Connection: close
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 102
 
<html><head><title>Current IP Check</title></head><body>Current IP Address: 89.12.4.18</body></html>
 
IP Address: 89.12.4.18
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);