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