ubuntuusers.de

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.

Diese Revision wurde am 16. Januar 2012 09:13 von Heinrich_Schwietering erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Programmierung