ubuntuusers.de

Hinweis: Dies ist ein statischer Snapshot unseres Wikis vom 25. März 2013 und kann daher nicht bearbeitet werden. Der aktuelle Artikel ist unter wiki.ubuntuusers.de zu finden.

HTTP-Interaktion

Archivierte Anleitung

Dieser Artikel wurde archiviert, da er - oder Teile daraus - nur noch unter einer älteren Ubuntu-Version nutzbar ist. Diese Anleitung wird vom Wiki-Team weder auf Richtigkeit überprüft noch anderweitig gepflegt. Zusätzlich wurde der Artikel 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.

ubuntuusers.local › WikiArchivSkripteHTTP-Interaktion