i

Ein HTTP-Client

HTTP-GET-Anfrage

Wenn die URL https://www.inf-schule.de/content/1_information/1_informationsdarstellunginternet/1_vernetztewebseiten/1_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/1_information/1_informationsdarstellunginternet/1_vernetztewebseiten/1_einstieg_www/_bailey1.html zurückzuliefern.

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

GET /content/1_information/1_informationsdarstellunginternet/1_vernetztewebseiten/1_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, 14 Apr 2018 20:46:25 GMT
Server: Apache/2.4.10 (Debian)
Last-Modified: Thu, 11 Jan 2018 19:23:27 GMT
ETag: "3aa-562851514823b"
Accept-Ranges: bytes
Content-Length: 938
Vary: Accept-Encoding
Content-Type: text/html; charset=UTF-8

... Inhalt von /content/1_information/1_informationsdarstellunginternet/1_vernetztewebseiten/1_einstieg_www/_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
>>> import ssl
>>> c = socket.socket()
>>> c.connect(('www.inf-schule.de', 443))
>>> c = ssl.create_default_context().wrap_socket(c, server_hostname='www.inf-schule.de')
>>> c.send('GET /content/1_information/1_informationsdarstellunginternet/1_vernetztewebseiten/1_einstieg_www/_bailey1.html HTTP/1.1\r\nHost: www.inf-schule.de\r\n\r\n'.encode())
148
>>> x = c.recv(2048)
>>> print(str(x, 'utf-8'))
HTTP/1.1 200 OK
Date: Sat, 14 Apr 2018 20:46:25 GMT
Server: Apache/2.4.10 (Debian)
Last-Modified: Thu, 11 Jan 2018 19:23:27 GMT
ETag: "3aa-562851514823b"
Accept-Ranges: bytes
Content-Length: 938
Vary: Accept-Encoding
Content-Type: text/html; charset=UTF-8

<!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 alt="Foto von Bailey" src="img/bailey1.jpg"/>
		</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.py.

Suche

v
10.5.1.3
inf-schule.de/rechnernetze/anwendung/internetdienste_sockets/httpclient
inf-schule.de/10.5.1.3
inf-schule.de/@/page/L3wcMcNiGNm5Rrod

Rückmeldung geben