Il protocollo HTTP Introduzione alla programmazione di Servlet

La programmazione Http in Java
Tito Flagella
Laboratorio Applicazioni Internet - Università di Pisa
Tito Flagella - [email protected]
API
SlideJava
Title per il Protocollo Http
• Programmazione Client
– java.net.URL
http://docs.oracle.com/javase/7/docs/api/java/net/URL.html
– Apache HttpCommon
https://hc.apache.org/httpcomponents-client-4.4.x/index.html
• Programmazione Server
– Servlet API
http://docs.oracle.com/javaee/7/api/javax/servlet/package-summary.html
Tito Flagella - [email protected]
2
java.net.URL
Slide Title
Creazione di una URL
try {
URL u = new URL("http://www.unipi.it/iscriviti?studente=gio");
}
catch (MalformedURLException e) {}
try {
URL u =
new URL("http”, “www.unipi.it”, 80, “iscriviti?studente=gio");
}
catch (MalformedURLException e) {}
Tito Flagella - [email protected]
3
Utilizzo
Slide Titledel metodo GET
1. Si istanzia la URL:
URL u = new URL("http://www.unipi.it/iscriviti?studente=gio");
2. Si usa il metodo openConnection della URL per creare l'oggetto
HttpURLConnection
HttpURLConnection con = (HttpURLConnection) u.openConnection();
3. Si accede ai dati della risposta tramite la URLConnection
int responseCode = con.getResponseCode();
InputStream is = null;
if (con.getResponseCode() < 300) {
is = con.getInputStream();
else
is = con.getErrorStream();
}
Tito Flagella - [email protected]
4
Accesso
Slide Titleagli Header della Response
Accesso a un singolo header per nome:
con.getHeaderField("Last-modified");
Metodi di Utility:
getContentLength(), getContentType(), getContentEncoding(),
getExpiration(), getDate(), getLastModified()
Per iterare sugli header:
String key = null;
for (int i=1; (key = uc.getHeaderFieldKey(i))!=null); i++) {
System.out.println(key + ": " + uc.getHeaderField(key));
}
Tito Flagella - [email protected]
5
Slide
Titledel metodo POST
Utilizzo
Si usa ancora la HttpURLConnection, ma...
1. si prepara la URLConnection per l'uso per la POST:
con.setDoOutput(true);
con.setRequestMethod(true);
2. si settano gli header della richiesta:
con.addRequestProperty(“nome”, valore”);
3. prima di accedere all'input stream, si accede all'output stream
per la scrittura dei dati della richiesta
con.getOutputStream()
Tito Flagella - [email protected]
6