Ein HTTP-Client

HTTP-GET-Anfrage

Wenn die URL http://www.inf-schule.de/informatik/informationsdarstellunginternet/vernetztewebseiten/einstieg_www/bailey1.html im Browser aktiviert wird, wird eine Anfrage an einen Host mit dem Namen www.inf-schule.de gesandt, die Datei /content/informatik/informationsdarstellunginternet/vernetztewebseiten/einstieg_www/bailey1.html zurückzuliefern.

Ein HTTP-Client sendet hierzu die folgende Anfrage an den HTTP-Server:

GET /content/information/informationsdarstellunginternet/vernetztewebseiten/einstieg_www/bailey1.html HTTP/1.1
Host: www.inf-schule.de

Der HTTP-Server liefert daraufhin die folgende Antwort:

HTTP/1.1 200 OK
Date: Sat, 11 Jun 2011 14:03:45 GMT
Server: Apache/2.2
Last-Modified: Wed, 22 Jul 2009 07:14:01 GMT
ETag: "40458a26-472-46f461d9563e9"
Accept-Ranges: bytes
Content-Length: 1138
Content-Type: text/html

... Inhalt von informatik/informationsdarstellunginternet/vernetztewebseiten/einstieg_bailey/bailey1.html ...

Durchführung einer HTTP-GET-Anfrage mit einem Client-Socket

Der folgende Python-Dialog zeigt, wie man eine HTTP-GET-Anfrage an einen HTTP-Server mit einem Socket-Objekt erzeugt.

>>> import socket
>>> c = socket.socket()
>>> c.connect(('www.inf-schule.de', 80))
>>> c.send(bytes('GET /content/information/informationsdarstellunginternet/vernetztewebseiten/einstieg_www/bailey1.html HTTP/1.1\r\nHost: www.inf-schule.de\r\n\r\n','ascii'))
142
>>> b = c.recv(1024)
>>> print(str(b, 'utf-8'))
HTTP/1.1 200 OK
Date: Wed, 16 Dec 2015 23:14:24 GMT
Server: Apache/2.2.16 (Debian)
Last-Modified: Tue, 11 Aug 2015 14:15:07 GMT
ETag: "47f2e2-3a9-51d09baa770c0"
Accept-Ranges: bytes
Content-Length: 937
Vary: Accept-Encoding
Content-Type: text/html
X-Pad: avoid browser bug

<!doctype html>
<html>
	<head>
		<meta charset="utf-8">
		<link href='styles/style.css' rel='stylesheet' type='text/css'>
		<title>Homepage von Bailey</title>
	</head>
	<body>
		<h1>Hallo, ich heiße Bailey</h1>
		<p>
			<img src="img/bailey1.jpg" alt="Foto von Bailey">
		</p>
		<p>
			Hallo, ich heiße Bailey und lebe in der Nähe von 
			<a href="http://www.kaiserslautern.de">Kaiserslautern</a>. 
			Ich bin ein Australian Shepherd, meine Vorfahren haben in 
			Australien Schafe gehütet.
		</p>
		<p>
			Wenn ich erwachsen bin, will ich Agility-Sport treiben. 
			Wisst ihr überhaupt, was das ist? Wenn nicht, dann schaut 
			euch doch mal die Fotos bei 
			<a href="https://de.wikipedia.org/wiki/Agility">Wikipedia</a> 
			an. Ihr
>>> b = c.recv(1024)
>>> print(str(b, 'utf-8'))
 werdet staunen, was wir Hunde alles können!
		</p>
		<p>
			Ich kann aber auch schon ganz viel. Das könnt ihr auf 
			der <a href="bailey2.html">nächsten Seite</a> sehen.
		</p>
	</body>
</html>
>>> 

Aufgabe 1

Probiere das selbst mit verschiedenen URLs aus. Beachte, dass gegebenenfalls eine andere Codierung angegeben werden muss.

GUI für eine HTTP-GET-Anfrage

Die Ausführung einer HTTP-GET-Anfrage kann natürlich auch in ein Programm mit grafischer Benutzeroberfläche eingebunden werden.

GUI HTTP-Client

Aufgabe 2

Teste das Programm socket-client-v4.txt.

X

Fehler melden

X

Suche