Verbinding met internet

Als eerste gaan we zorgen dat we überhaupt toegang tot het internet krijgen. Open AndroidManifest.xml en ga naar de tab Permissions. Klik op Add, selecteer Uses Permissions en klik op OK. Zoek in de lijst aan de rechterkant naar android.permission.INTERNET en sla het bestand op. Je hebt nu toegang tot het internet!

Nu gaan we zorgen dat je zelf niet al het moeilijke werk hoeft te doen om webpagina's op te halen. Ga naar http://loopj.com/android-async-http/ en klik op Download. Sla het bestand dat je download op in de libs map van je Android project. Ga nu weer naar Eclipse en rechtsklik op je libs-map en klik op Refresh.

Nu gaan we de method reloadList() implementeren. Als eerste maken we de HTTP Client aan en zorgen we voor een request (alles komt uit de library):

Code (MainActivity.java) (java)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
protected void reloadList() {
    AsyncHttpClient client = new AsyncHttpClient();
    client.get("http://www.koenv.nl/phphulp/android/index.php",
            new JsonHttpResponseHandler() {
                
            });
}

Je kan mijn server gebruiken of vervang http://www.koenv.nl/phphulp/android/index.php door je eigen URL. Hetgene wat deze method tot nu toe doet is een HTTP Client aanmaken, en dan een GET request sturen naar http://www.koenv.nl/phphulp/android/index.php. De response zal hier worden afgehandeld door de JsonHttpResponseHandler. De afhandeling gaan we nu maken. Als eerste gaan we zorgen dat de gebruiker een melding krijgt als er een fout is:
Code (MainActivity.java) (java)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
protected void reloadList() {
    AsyncHttpClient client = new AsyncHttpClient();
    client.get("http://www.koenv.nl/phphulp/android/index.php",
            new JsonHttpResponseHandler() {
                @Override
                public void onFailure(Throwable e, JSONObject response) {
                    try {
                        Toast.makeText(
                                MainActivity.this,
                                "Er is een fout opgetreden: "
                                        + response.getString("error"),
                                Toast.LENGTH_LONG).show();
                    }
catch (JSONException e1) {
                        Toast.makeText(MainActivity.this,
                                "Er is een onbekende fout opgetreden",
                                Toast.LENGTH_LONG).show();
                    }
                }

                @Override
                public void onFailure(Throwable e, String response) {
                    Toast.makeText(MainActivity.this,
                            "Er is een onbekende fout opgetreden",
                            Toast.LENGTH_LONG).show();
                }
            });
}

Nu krijgt de gebruiker een 'Toast' met één van de messages die wij hebben geprogrammeerd. Er staan iets uitgebreidere methods in de GitHub repository zodat je beter kan debuggen als er iets fout gaat.

We gaan als laatste zorgen dat we een mooie lijst krijgen als het wel goed gaat :):
Code (MainActivity.java) (java)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
protected void reloadList() {
    AsyncHttpClient client = new AsyncHttpClient();
    client.get("http://www.koenv.nl/phphulp/android/index.php",
            new JsonHttpResponseHandler() {
                @Override
                public void onSuccess(JSONArray response) {
                    try {
                        // Leeg eerst alle articles
                        articles.clear();
                        for (int i = 0; i < response.length(); i++) {
                            // Nu willen we het JSON Object op de plaats i
                            JSONObject object = response.getJSONObject(i);
                            // Daarin zoeken we alle waarden op nodig voor
                            // ons Article object

                            int id = object.getInt("id");
                            String title = object.getString("title");
                            String content = object.getString("content");
                            String slug = object.getString("slug");
                            // Dan maken we ons Article object
                            Article article = new Article(id, title,
                                    content, slug);
                            // En voegen we deze toe aan onze lijst
                            articles.add(article);
                        }
                    }
catch (JSONException e) {
                        Toast.makeText(MainActivity.this,
                                "Er is een onbekende fout opgetreden",
                                Toast.LENGTH_LONG).show();
                        // Hiermee kan jij de errors zien in de view DDMS
                        // (rechtsboven klik je op DDMS in Eclipse)

                        Log.e("PHPHulp", response.toString(), e);
                    }
finally {
                        // En hier zeggen we dat er iets is veranderd aan
                        // onze lijst en dat deze dus gerefresh moet worden

                        adapter.notifyDataSetChanged();
                    }
                }


                // hier de onFailure()
            });

}

Ik neem aan dat je ondertussen wel weet dat je altijd Ctrl+Shift+O moet proberen als er rode lijntjes ergens onder staan. Gaat het hiermee niet weg, ga dan over het rode lijntje en probeer of je de fout begrijpt. Zo niet, zoek het op op internet of vraag het in de reacties.

« Lees de omschrijving en reacties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.