plusone

26. Februar 2012

Abfragen und Auslesen von JSON unter Android - Client-Server/JSON-Rest-WebService (Part3)

Hallo zusammen,

wer gestern nicht auf der Strasse gewesen sein sollte.
Kann sich HIER einmal Informieren was er verpasst.

Aber zurück zum Thema des Posts.
Dieses Tutorial beschreibt das Abfragen und Auslesen von JSON unter Android mit API 1 oder höher.

Vorraussetzung ist ein laufender Apache mit PHP und JSON Ausgabe.

Als erstes erstellen wir ein AndroidProjekt. In Projektname schreibt ihr JsonClient und in Target Name Android 1.5. Ich halte persönlich nichts von alten Androidversionen und freue mich, dieses Jahr auf Android 4.0 zu entwickeln. Mein Atrix bekommt Q3 2012 das Update auf ICS.

Nach dem erstellen des Projektes schreibt ihr in eure Android-Klasse:

package com.alexroid.test.jsonclient;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class JsonClientActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        HttpClient httpClient = new DefaultHttpClient();
        HttpGet httpGet = new HttpGet("http://10.0.2.2:80/index.php");
        StringBuilder stringBuilder = new StringBuilder();

        try {
            HttpResponse response = httpClient.execute(httpGet);
            int statusCode = response.getStatusLine().getStatusCode();
            if (statusCode == 200) {
                BufferedReader reader = new BufferedReader(
                        new InputStreamReader(response.getEntity().getContent()));

                String line;
                while ((line = reader.readLine()) != null) {
                    stringBuilder.append(line);
                }

                Log.i(this.getClass().getSimpleName(), stringBuilder.toString());
            } else {
                Log.e(this.getClass().getSimpleName(), "Fehler");
            }

        } catch (ClientProtocolException e) {
            Log.e(this.getClass().getSimpleName(), e.getMessage());

        } catch (IOException e) {
            Log.e(this.getClass().getSimpleName(), e.getMessage());
        }
    }
}

Das könnt ihr mit einem AVD testen. Das AVD ist mit eurem Computer in einem privatem Netzwerk, daher auch die IP-Adresse 10.0.2.2. Sollte eurer Apache auf einem Server liegen, tragt ihr beim HttpGet natürlich die IP des Servers ein.

Danach könnt ihr die APP starten und im LogCat findet ihr die JSON-Ausgabe.

Die HttpGet Klasse fragt nur die URL nach dem GET ab. Für unser Beispiel reicht das vollkommen.
Genauso kommt die Statusline hier auch zu kurz.

Ich hoffe die ersten drei Grundeinführungen konnten euch weiterhelfen.

regards
Alexander Fink

Part1 ist JSON per PHP.
Part2 ist Apache2 und PHP.
Part3 ist Abfragen und Auslesen von JSON unter Android - hier befinden Sie sich gerade.

1 Kommentar:

Stefan Wienströer hat gesagt…

Wie interpretiert man das JSON denn in Java? So dass man das als Array oder Objekt zurück bekommt und nicht nur als String?

Kommentar veröffentlichen