[[Vorlage (archiviert)]] [[Inhaltsverzeichnis(3)]] Oft muss man Daten über ein Netzwerk austauschen. Das '''H'''yper'''T'''ext'''T'''ransfer'''P'''rotocol ist ein häufig verwendetes Protokoll dafür und stellt die Grundlage der üblichen Webangebote dar. = Bash = Wenn das Programm '''wget''' installiert ist, kann man Daten mit wget herunterladen. Eine Anleitung gibt es im Artikel [:Download-Manager:]. = Python = Unter Python gibt es dafür das Modul `urllib`. {{{#!code python from urllib import urlopen as connect, urlencode # Die Parameter parameter = urlencode({"foo": "bar", "spam": "eggs"}) # Parameter in der URL übermitteln: print connect("http://server.tld/script?%s" % parameter) # Parameter als POST übermitteln: print connect("http://server.tld/script", parameter) }}} = Ruby = In Ruby gibt es mehrere Möglichkeiten, das Ziel zu erreichen. === Mit dem Net::HTTP-Modul === Zum Einen kann das Net::HTTP-Modul benutzt werden - für normale GET-Requests {{{#!code ruby require 'net/http' parameter = "foo=bar&spam=eggs" Net::HTTP.start('server.tld') { |request_objekt| antwort = request_objekt.get("/?#{parameter}") puts antwort.code #sollte idealerweise 200 (OK) sein puts antwort.body #die eigentliche HTML-Seite } }}} und auch zum POSTen von Daten {{{#!code ruby require 'net/http' param1 = "bar" param2 = "eggs" Net::HTTP.start('server.tld') { |request_objekt| antwort = request_objekt.post('/post.php', "foo=#{param1}&spam=#{param2}") puts antwort.code #hoffentlich wieder 200 puts antwort.body #was auch immer ein POST-Request zurückliefert (meist HTML) } }}} === Mit dem open-uri-Modul === Wenn man nur lesen will, muss man einfach das Modul `open-uri` einbinden, das den normalen `open`-Aufruf um die Fähigkeit erweitert, URLs zu öffnen. {{{#!code ruby require 'open-uri' open('http://server.tld/seite.html') { |uri| puts uri.readlines } }}} = Perl = Eine Webseite abfragen kann man leicht mit dem Modul LWP::Simple, wie folgendes Beispiel zeigt: {{{#!code perl #!/usr/bin/perl -w use LWP::Simple; print get("http://ubuntuusers.de/") or die "Webabfrage schlug fehl: $!"; }}} Etwas ausführlicher mit encoding der URL-Parameter: {{{#!code perl #!/usr/bin/perl -w use strict; use LWP::Simple; use URI::Escape; my $encoded = uri_escape("Hallo Welt\n"); #print $encoded, "\n"; # zu debugging-Zwecken getprint("http://ubuntuusers.de/?$encoded") or die "Webabfrage schlug fehl: $!"; }}} Das Modul [http://search.cpan.org/~petdance/WWW-Mechanize-1.10/lib/WWW/Mechanize.pm WWW::Mechanize] erlaubt die komplette Automatisierung von Webabfragen. # tag: Programmierung