Wrong language? Choose different language instead:

close
Android Forum » Android Developer Forum » Android Code Snippets » Load Website via HttpURLConnection

Load Website via HttpURLConnection

Load Website via HttpURLConnection
verfasst am 26.03.2012 21:22:51 — geändert am 18.02.2013 21:26:09
Hallo,
da im Forum gefühlt jede Woche 10 mal gefragt wird: "Wie lade ich eine Website via HttpURLConnection?" oder so etwas wie: "Was mache ich beim Laden via HttpURLConnection falsch?", habe ich das einfach mal hier gepostet.
Die beiden Methoden sind rudimentär und machen das nötigste. Sollten hier Verbesserungen oder Erweiterungen eingefügt werden, einfach Posten und dann werde ich das nachhalten.

Anmerkung:
Eigentlich gilt die HttpURLConnection als busted und es sollte HttpClient verwendet werden.

1/**
2 * Lädt anhand der übergebenen URL die Seite und gibt den Inhalt als java.lang.String zurück
3 * @param websiteUrl Url zur Webseite, welchen den Content enthält
4 * @return In Inhalt der Webseite als java.lang.String
5 */
6 private String ladeWebsite(final String websiteUrl)
7 {
8 HttpURLConnection urlConnection = null;
9
10 try
11 {
12 final URL url = new URL(websiteUrl);
13 urlConnection = (HttpURLConnection) url.openConnection();
14 final InputStream result = new BufferedInputStream(urlConnection.getInputStream());
15
16 return readStream(result);
17 }
18 catch (MalformedURLException e)
19 {
20 Log.e("MY_TAG", e.getMessage());
21 }
22 catch (IOException e)
23 {
24 Log.e("MY_TAG", e.getMessage());
25 }
26 finally
27 {
28 if ( null != urlConnection )
29 {
30 urlConnection.disconnect();
31 }
32 }
33
34 return null;
35 }
36
37 /**
38 * Hier wird ein beliebiger in ein String umgewandelt.
39 * @param in InputStream, welcher die Daten zum Umwandeln enthält.
40 * @return Die Daten aus dem InputStream als java.lang.String.
41 * @throws IOException Exception, welchem beim Umwandeln auf treten kann.
42 */
43 private String readStream(final InputStream in) throws IOException
44 {
45 final BufferedReader reader = new BufferedReader(new InputStreamReader(in), 4096);
46 final StringBuilder result = new StringBuilder();
47
48 String line;
49 while ((line = reader.readLine()) != null)
50 {
51 result.append(line);
52 }
53 reader.close();
54
55 return result.toString();
56 }

Seit Android 3.0 (API level 11) ist es nicht mehr gestattet das Netzwerkzugriffe im UI-Thread ausgeführt werden. Somit muss diese Kommunikation in einen Thread, AsyncTask, Services usw. ausgelagert werden.

Gruß,
Markus

-----
!!! BAZINGA !!!

Antworten mit Zitat Antworten Link +2     (2 Stimmen)
RE: Load Website via HttpURLConnection
verfasst am 15.02.2013 22:27:50
Weil es nicht annähernd den gleichen Zweck erfüllt. Hier geht das es darum den Inhalt den http-Request zu verarbeiten.

-----
!!! BAZINGA !!!

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: Load Website via HttpURLConnection
verfasst am 18.02.2013 20:13:43
Hey Markus,
gute Idee hier mal den Code zu schreiben.
Bitte füge noch hinzu, dass das ganze in einer AsyncTask bzw. in einem Background Thread stattfinden kann, sonst bekommt man NetworkOnMainThreadExceptions.

Danke
gruß
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: Load Website via HttpURLConnection
verfasst am 18.02.2013 21:26:34
Hi,
habs mit aufgenommen.

-----
!!! BAZINGA !!!

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)