2010-11-22 13 views
3

ウェブサービスに基づいてアンドロイドアプリケーションを開発しています。クリックした項目に基づいてクエリ(PHPとMySQLを使用したサーバ)を実行し、Webから結果を取得するにはどうすればよいですか?また、リスト(List Layout)としていくつかの値を表示したい。これを達成するためにとにかくありますか?アンドロイドアプリケーションの値を取得する方法

答えて

2

あなたのやりたいことは、あなたのアンドロイドアプリのデータを提供する残りのAPIを開発することです。例えば。あなたのウェブサイトはあなたのアプリで使用したいと思ういくつかのコンテンツを持っている、あなたは特定の形式でそのデータを返すだけのPHPスクリプトを書くことができます。

など。 mysite.net/rest/fetchAllLocations.php?maybe_some_parameters

これは、例えば、

[{"id":1、 "shop_lng":8.5317153930664、 "shop_lat":52.024803161621、 "shop_zipcode":33602、 "shop_city": "Bielefeld"のような例です。 "shop_street": "Arndtstra \のu00dfe"、 "shop_snumber":3、 "shop_name": "M \のu00fcller"、 "shop_desc": "Kaufhausも"}]

ここで残りのAPI要求の例である:

http://shoqproject.supervisionbielefeld.de/public/gateway/gateway/get-shops-by-city/city/Bielefeld

あなたのREST APIを設定しているとき、つまり、あなたのAndroidの携帯電話でそのデータを受信して​​対処することができます。私は、このデータを取得するには、静的メソッドを使用します。

public class JsonGrabber{ 

public static JSONArray receiveData(){ 
    String url = "your url"; 
    String result = ""; 

    DefaultHttpClient client = new DefaultHttpClient(); 
    HttpGet method = new HttpGet(url); 
    HttpResponse res = null; 

    try { 
     res = client.execute(method); 
    } catch (ClientProtocolException e1) { 
     e1.printStackTrace(); 
    } catch (IOException e1) { 
     e1.printStackTrace(); 
    } 

    try{ 
     InputStream is = res.getEntity().getContent(); 
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1")); 
     StringBuilder sb = new StringBuilder(); 
     String line = null; 
     while ((line = reader.readLine()) != null) { 
       sb.append(line + "\n"); 
     } 
     is.close(); 
     result = sb.toString(); 
    }catch(Exception e){ 
     Log.e("log_tag", "Error converting result "+e.toString()); 
    } 

    JSONArray jArray = null; 

    try{ 
     jArray = new JSONArray(result); 
    }catch(JSONException e){ 
      Log.e("log_tag", "Error parsing data "+e.toString()); 
    } 

    return jArray; 
} 
} 

まあ、すべてのthatsの、あなたはJSON形式のデータを持っていたら、あなたはそれを解析する必要があります。

JSONArrayテスト=(JSONArray)JsonGrabber.receiveData( )

try { 
    for(int i=0;i<test.length();i++){ 
    JSONObject json_data = test.getJSONObject(i); 
    int id = json_data.getInt("id"); 
    } 
} 

Webリクエストは、時間がかかるプロセスである可能性があるため、別のスレッドで実行する必要があります。したがって、AsyncTaskを処理する必要があります。ここではいくつかのリソースは次のとおりです。

Painless Threading Multithreading for performance Hello Android Tutorial

+0

ありがとうArtWorkAD。私はこれを試してみましょう。あなたはアンドロイドでSAXを使ってXMLを解析する方法を知っていますか?私はいくつかのリンクを試したが、よりよい解決策を見つけることができなかった。私は、XMLファイルからいくつかのカテゴリ名を取得し、アンドロイド電話にそれを記載したいと思います。 –

+1

あなたは別の質問でそれを聞くことができます –

関連する問題