[[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