• Aucun résultat trouvé

Lab Session

N/A
N/A
Protected

Academic year: 2022

Partager "Lab Session"

Copied!
2
0
0

Texte intégral

(1)

Web Master 1 IFI Lab Session #1: HTTP

Andrea G. B. Tettamanzi Université côte d'Azur

andrea.tettamanzi@univ-cotedazur.fr Academic Year 2019/2020

Abstract

We will build a simple HTTP client in Python, to test various requests and correctly receive and print the response messages on the console.

1 Introduction

HTTP is an application protocol, which builds on top of the TCP/IP stack of protocols. This means that its messages are exchanged between clients and servers through TCP sockets.

As a consequence, we will have to use the socket module of Python, whose documentation can be found at https://docs.python.org/3/library/socket.html. This module provides access to the BSD socket interface, which is a low-level networking interface. Higher-level net- working APIs exist, but it is a good idea to get started using this one because of its simplicity and of the complete control it leaves to the developer.

You are assumed to be already familiar with socket programming, possibly in another pro- gramming language; however, socket programming in Python does not dier too much from socket programming in C or any other language.

2 Requirements

1. We are going to build a simple HTTP client. An HTTP client is also a socket client.

Therefore, the rst step is to implement a simple TCP socket client. Here is the Python code of an embryonic client, from which you can start:

#!/usr/bin/env python3 import socket

HOST = 'www.w3c.org' # The server's IP address

PORT = 80 # By default, HTTP uses port 80

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:

s.connect((HOST, PORT))

s.sendall(b'GET /index.html HTTP/1.1\r\nHost: ' + HOST.encode("utf-8") + b'\r\n\r\n')

response = s.recv(1024)

print('Received', repr(response)) 1

(2)

2. Our client should accept a command-line argument specifying the URI of the resource for which we are to issue an HTTP request.

(a) The client will check that the protocol is http (or nothing, which will be interpreted as the default protocol, namely http) and issue an error message otherwise.

(b) The URI will be parsed and the HOST and PORT changed accordingly, if applicable.

(c) Any syntax error in the URI will be reported by the client, via an informative error message.

3. The client should make it possible to experiment with all the methods supported by HTTP.

Therefore, it will accept another command-line argument specifying the method (GET, HEAD, POST, etc.).

(a) Implement the nine methods discussed during the lesson.

(b) If an unsupported method is specied on the command-line, show an error message.

(c) If the request for the specied method provides for a body, expect another command- line argument specifying a le containing the message body.

(d) If the body le is not specied on the command line, show a prompt to the user, e.g., Please type the message body (end with ctrl-D):

then read the message body from the console.

4. The client will process the response according to its status code:

(a) Informational (1xx) and successful (2xx) responses will just be copied to the console.

(b) Redirection (3xx) responses will be reported with an informative warning message and the request will be forwarded to the new URI provided by the response, unless the protocol is other than http.

(c) Client and server error (4xx and 5xx) responses will be reported with an informative error message.

2

Références

Documents relatifs

With the cursor still positioned on the last line of the file, type P to paste the text above the current line:.. The quick brown fox jumped over the

Line Mode configures the terminal for line-by-line data transmission. The Program Function keys do not operate in the mode.. The following Command sequences

Polyominoes, tiling the plane by translation, theorem of Beauquier- Nivat, pseudo-square, pseudo-hexagon, enumeration of special classes of polyominoes.. 1 Laboratoire

safekeeping. The pynabyte utility DYNASTAT displays your current system configuration. 'The steps described below will change the drive assignrnentsso that you will

In particular, I discuss how bodily illusions (e.g., the Rubber Hand Illusion), bodily disruptions (e.g., somatoparaphrenia) and the multimodal nature of bodily

The multiple uses argument does not merely say that the same image can be described in multiple ways, it claims that since the phenomenal aspect is not sufficient to distinguish

Again, the realization sinks in: this body I just sewed up, Eric’s body, is dead, and going to the morgue.. No one cares how my sutures look, because he is going to

Residency in a family medicine–run hospital Many programs offer family medicine training in secondary and primary care hospitals, run primarily by family doctors (including McGill’s