_ 3.1.1 Webbserverkopplingar Vi ska i denna uppgift koppla oss till en speciell typ av server kallad webbserver. Man skulle kunna använda en lågnivåkoppling men det kräver att man kan det protokoll eller språk som servern pratar, i det här fallet HTTP-protokollet. Vi ska istället använda en skräddarsydd högnivåkoppling som själv kan prata det protokoll som används av en viss tjänst. __ Uppgift Gör ett program som implementerar en enkel webbläsare. Användaren ska kunna ange en valfri webbadress och programmet ska hämta informationen på denna adress och presentera resultatet för användaren. Notera att informationen inte ska tolkas utan bara presenteras som ren text. Frivillig överkurs är att utöka programmet så att den mottagna informationen tolkas, det vill säga inte enbart presenteras som ren text utan visas med text, bilder och fungerande länkar. __ Exempel Ett enkelt exempel utan GUI kan köras enligt följande: = Hämta filen: §[BrowserTerminal.jar, 05_ass/ip1/3/3.1.1/BrowserTerminal/BrowserTerminal.jar]§ = Kör programmet med: §java -jar BrowserTerminal.jar https://people.dsv.su.se/~pierre/i/i.cgi?href=aa_public/home/main.txt§ Ett enkelt exempel med GUI kan köras enligt följande: = Hämta filen: §[Browser.jar, 05_ass/ip1/3/3.1.1/Browser/Browser.jar]§ = Kör programmet med: §java -jar Browser.jar§ Ett enkelt exempel med GUI och tolkning av informationen kan köras enligt följande: = Hämta filen: §[BrowserAdvanced.jar, 05_ass/ip1/3/3.1.1/BrowserAdvanced/BrowserAdvanced.jar]§ = Kör programmet med: §java -jar BrowserAdvanced.jar§ __ Tips Använd klassen §URL§ och någon lämplig metod från denna klass, exempelvis metoden §openStream§ vilket returnerar i en in-ström som man kan läsa från. En variant är: § StringBuffer buffer = new StringBuffer(); String line = ""; URL url = new URL(urlString); BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream())); while((line = br.readLine()) != null) { buffer.append(line + "\n"); } String text = buf.toString(); § En annan mer kompakt variant är: § InputStream is = new URL(urlString).openStream(); String text = new Scanner(is).useDelimiter("\\A").next(); § För de som vill titta på hur man kan tolka informationen kan använda klassen §javax.swing.JEditorPane§ (se API-beskrivningen). Den här klassen klarar inte mer komplexa HTML-dokument, men det finns extensioner för det, se exempelvis [WebRenderer, http://www.webrenderer.com/]. __ Hjälp ~ 05_ass/help/01.txt > [Klicka här för hjälp, helper.dsv@gmail.com, Prog Internet: 3.1.1 Webbserverkopplingar: http://people.dsv.su.se/~pierre/i/i.cgi?href=05_ass/ip1/3.1.1.txt] ½===system_tutoring_message===½ < ~ 05_ass/help/02.txt