HTTP,Accsauxressources
EtienneDuris
text
image
audio
video
message
multipart
application
Page 2
text/html; charset=iso-8859-1
Sous-types:
Page 3
Les URI
Exemple: URN:ISBN:2-7117-8689-7
Syntaxe gnrale:
Page 4
Le schma
doit commencer par une lettre minuscule, puis tre compos de lettres
minuscules, de chiffres et des signes "+", "." et "-"
Page 5
URI hierarchiques
Page 6
Schma http
http://<machine>:<port>/<path>?<query>
Schma https
Page 7
Schma ftp
ftp://<user>:<passwd>@<machine>:<port>/<r1>/<r2>/...
.../name;type=<typecode>
Exemples :
ftp://ftp.inria.fr/rfc
ftp://duris:monmo2pas@igm.univ-mlv.fr/W3/img.gif;type=i
Page 8
Schma mailto
RFC 822
mailto:<adr1>,<adr2>?<header1>=<value1>&<header2>=<value2>
<adr i>
Si <header>
Exemples:
mailto:roussel@univ-mlv.fr
mailto:roussel@univ-mlv.fr,bedon@univ-mlv.fr?subject=test&body=test
Page 9
Schma telnet
Terminal interactif
telnet://<user>:<passwd>@<machine>:<port>/
Page 10
Schma file
file://<machine>/<path>
file:///home/duris/COURS/JAVA/http/progJavaHTTP.sxi
file:///C:/Program%20Files/
Page 11
//<net_loc>/<path1>/.../<pathn>;<params>?<query>
Chacun des prfixes peut tre omis et sera remplac par l'URI de base
(s'il est moins prcis)
http://igm.univ-mlv.fr/~roussel/test/index.html
//etudiant.univ-mlv.fr signifie
http://etudiant.univ-mlv.fr/
alors
Page 12
Le protocole HTTP
Page 13
Principe Requte/Rponse
Page 14
Ligne de dbut
Champ d'en-tte_1: valeur_1
...
Champ d'en-tte_n: valeur_n
Page 15
Message de requte
Page 16
Message de rponse
Page 17
Organiss en 5 catgories
Page 18
Page 19
Quelques requtes
Page 20
Page 21
% telnet www.w3.org 80
Trying 193.51.208.67...
Connected to www.w3.org.
Escape character is '^]'
GET /Overview HTTP/1.1
Host: www.w3.org
HTTP/1.1 200 OK
Date: Sun, 30 Jun 2002 15:33:43 GMT
Server: Apache/1.3.6 (Unix) PHP/3.0.9
Last-Modified: Sat, 29 Jun 2002 16:08:59 GMT
ETag: "2d2c96-2c69-3778ef9b"
Accept-Ranges: bytes
Content-Length: 11369
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC ...
<html lang="en"> ... le code du document html ...
</html>
Page 22
Page 23
L'authentification
Un challenge est constitu d'un schma (mot, ex: Basic), suivi de paires
attribut=valeur. Exemple:
Basic realm= "zone-protection-2"
Page 24
L'authentification (suite)
en base 64 de la chane
login:passwd
Page 25
Authentification (exemple)
Page 26
Page 27
<form enctype="application/x-www-form-urlencoded"
action="http://www.serv.fr/path"
method="GET">
<input type="text" name="user" value="votre nom">
<input type="submit" name="ok" value="Envoyer">
</form>
Page 28
l'URL http://www.serv.fr/path,
Page 29
Page 30
<form enctype="application/x-www-form-urlencoded"
action="http://www.serv.fr/path" method="GET">
Zone de texte (nom) :
<input type="text" size="30" name="user" value="votre nom"><hr>
<textarea name="srctext" rows="6" cols="40">
Tapez votre message ici.
</textarea><hr>
Zone de boutons (age) : Quel ge avez vous?
moins de 18 ans <input type="radio" name="age" value="-18">
de 19 35 ans <input type="radio" name="age" value="19-35">
de 36 50 ans <input type="radio" name="age" value="36-50" checked>
plus de 50 ans<input type="radio" name="age" value="50-"><hr>
Zone de menu (disponibilit) : Vous tes
<select name="dispo">
<option value="ok">disponible
<option selected value="ko">indisponible
</select><hr>
<input type="hidden" name="client" value="a1234-567-8901">
<input type="submit" name="choix1" value="Accepter">
<input type="submit" name="choix2" value="Refuser">
<input type="reset" value="Rinitialiser">
<hr>
</form>
Page 31
Page 32
Chunked (exemple)
Page 33
Page 34
<form enctype="multipart/form-data"
action="/sendfile" method="POST">
Fichier 1 : <input type="file"
name="fichier1" size="20"><br><br>
Fichier 2 : <input type="file"
name="fichier2" size="20"><br><br>
<input type="hidden" name="ID" value="roussel">
<input type="submit" name="submit" value="Envoyer">
</form>
Test de fichier
Page 35
--ABCDEF
Content-Disposition: form-data; name="fichier1"; filename="test.txt"
Content-Type: text/plain
Test de fichier
--ABCDEF
Content-Disposition: form-data; name="fichier2"; filename=""
Content-Type: application/octet-stream
--ABCDEF
Content-Disposition: form-data; name="ID"
roussel
--ABCDEF
Content-Disposition: form-data; name="submit"
Envoyer
--ABCDEF-Etienne Duris ESIPE - Universit de Marne la Valle Avril 2012
Page 36
Diffrences principales
Page 37
D'autres requtes
Page 38
Les relais
Page 39
Session Tracking
Page 40
Cookies
Set-Cookie: <cl>=<valeur> [;
[;
[;
[;
expires=<DATE>]
path=<PATH>]
domain=<DOM>]
secure]
Page 41
Cookies (suite)
Attributs optionnels
Page 42
java.net.URI
scheme String
scheme-specific-part
authority String
user-info String
host String
port int
path String
query String
fragment String
String
Page 43
Classe URI
Page 44
Page 45
Page 46
isOpaque(), getSchemeSpecificPart()
Page 47
Retourne l'URI relatif qui reprsente uri par rapport l'URI de base sur
lequel est appel la mthode
Page 48
Classe URL
Six constructeurs
URL(String spec)
Page 50
Page 51
Page 52
InputStream openStream()
openConnection().getContent()
openConnection().getInputStream()
Page 53
Classe URLConnection
Gestionnaire de connection
Page 54
Page 55
getRequestProperty(String key)
Page 56
// Cration de l'url
URL url = new URL("http://www.univ-mlv.fr/index.html");
// Cration de l'objet connexion
URLConnection uc = url.openConnection();
// spcification de paramtres pour la connexion
uc.setRequestProperty("Connection","close");
SimpleDateFormat f = new SimpleDateFormat("dd/MM/yy zzzz");
Date d = f.parse("01/01/2002 GMT", new ParsePosition(0));
uc.setIfModifiedSince(d.getTime());
Page 57
Utiliser la connexion
Exploitation de la connexion
Page 58
getHeaderField() est dclin pour certains champs d'entte spcifiques (valeurs de retour de type String ou int):
Mthodes utilitaires
Page 59
Sous-classes de URLConnection
Page 60
Page 61
Authentification
Page 62
Authentification (2)
Un identificateur (String)
Page 63
Gestionnaires
Page 64
sun.net.www.protocol.<s>.Handler
sun.net.www.content.<type>.<soustype>
Page 65
Mcanisme gestionnaires
Page 66
URLConnection uc = ...;
uc.setContentHandlerFactory(ContentHandlerFactory chf);
Page 67
Applettes
URLClassLoader
Page 68
Chargement de classe
Page 69
Page 70
Chargeur de bootstrap
Page 71
Page 72
La classe ClassLoader
Page 73
ClassLoader getParent()
void resolveClass(Class c)
Page 74
Schma de dlgation
Page 75
Page 76
Page 77
Il est ainsi possible que la mme classe soit charge par deux
chargeurs diffrents: les deux classes charges sont
incompatibles
Page 78
Sous-classes de ClassLoader
Page 79
URLClassLoader
URL[] getURLs()
Page 80
java.applet.Applet
start() appele aprs init(), puis chaque fois que la fentre redevient
visible
stop() appele chaque fois que la fentre est cache, pour suspendre
l'animation par exemple
Page 81
Graphique et navigateur
Graphique
Page 82
Souche et Contexte
Page 83
La connexion vers une autre adresse Internet que celle d'o provient
l'applette
Page 84