HTTP-Interaktion
Archivierte Anleitung
Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.
Oft muss man Daten über ein Netzwerk austauschen. Das HyperTextTransferProtocol 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
.
1 2 3 4 5 6 7 8 9 10 | 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
1 2 3 4 5 6 7 8 9 | 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
1 2 3 4 5 6 7 8 9 10 | 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.
1 2 3 4 5 | 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:
1 2 3 4 | #!/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:
1 2 3 4 5 6 7 8 9 10 | #!/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 WWW::Mechanize erlaubt die komplette Automatisierung von Webabfragen.