2012-02-03 8 views
2

私はAndroid開発について学んでいます。 私は自分のウェブサイトからデータベースとやりとりするアプリを作りたいと思っています。その意味では、2つのものはもう一方のものに食い込むものです。それで。私は自分のサーバーと対話する最良の方法が何であるか把握しようとしています。私はアプリケーションをブラウザのような環境のようなアプリケーションにしたくないのですが、私は、DBと共通の機能しか持っていないサイトとは独立して動作する完全なアプリを開発したいと考えています。だから私の最善のアプローチは何ですか?Android App開発とWebサーバのやりとり

基本的にJSON/XMLを通じてやりとりするサーバー上のphpファイルに投稿/取得することができるようにアプリケーションを構築していますか、またはアプリケーションをサーバーに接続するためのより良い方法です要求を行う任意のIPにデータベースを開くように要求します。

ここで意見や提案をお探しください。私はこれがAndroidの開発とベストプラクティスに精通していると思う誰もがそれを見て、私はできる限りブログや他のすべてをサーフィンしたが、その意見は50/50と思われる。

答えて

3

あなたが選んだ言語(PHP、RoRなど)でバックエンドのデータベースにヒットする適切なRESTful Web APIを提供すると、任意の数の用途(自分のウェブサイト、モバイルアプリなど)。

これはAndroidアプリのRESTful APIとのやりとりで、これは単純にHTTPリクエストです。それらはヘルパークラスにカプセル化して、それらを簡単にすることもできます。

+2

ブライアンに同意するつもりです。私は、データベースバックアップされたウェブサイトで動作するアンドロイドアプリを開発しました。 (RORを使用します)。 RESTful APIを使用してJSONを使用します。 JSONをお持ちなら、GSONをお勧めします。私は組み込みのJSON androidパーサーで良い経験をしていませんでした。 RESTfulなAPIに関しては、必要なものを手に入れる必要があります。ウェブサイトと同じように、データベースとの完全な対話が可能です。私は、HTTPリクエストのためにアンドロイドのapacheフレームワークを使用しています。なぜなら、組み込みのものも非常に堅牢ではなかったからです。 http://code.google.com/p/google-gson/ http://hc.apache.org/downloads.cgi – daltoniam

+0

Apacheのフレームワークとgsonはどこに配置するのですか。私のウェブサーバ上に常駐していますか?これは起動準備が整ったときにアンドロイドファイルにまとめられたものでしょうか? – chris

+0

これはリンク先の外部ライブラリとしてあなたのアンドロイドアプリになります。 – daltoniam

0

私の経験に基づいて、アンドロイドでRESTfulな物事を行うための最善のフレームワークは次のとおりです。クライアントの観点からSpring Android

、それは安全なRESTfulなサービスにアクセスするために必要なすべてのツールを提供します。それはSpringであるため、ほとんどのボイラープレートのhttpコードで素晴らしい抽象を提供します。例として、jsonを返すGETを実行するためのきれいな方法を提供し、それをPOJOにシリアル化します。一例として、

:あなたは本当に何が起こっているか理解したい場合は

RestTemplate restTemplate = new RestTemplate(); 

// Add Jackson JSON Message Converter to Template 
restTemplate.setMessageConverters(
    new ArrayList<HttpMessageConverter<?>>() { 
     {    
      add(new MappingJacksonHttpMessageConverter()); 
     } 
    } 
); 

// Simple Conversion - pojo is now populated 
MyPojo pojo = restTemplate.getForObject(url, MyPojo.class); 
4

私はHTTP GETとPOSTのお手伝いをAndroid向けにそこにライブラリがあると確信しているが、しかし、そこにありますあなたが必要なクラスを自分で作るために理解しなければならないクラスのカップル。

最初に、HttpClient、HTTPGet、HTTPPost、およびHTTPResponseについて知ることができます。 Androidのそれ以降のバージョンには他にも素晴らしいクラスがいくつかありますが、それらの4つはあなたが始めてみなければならないものです。

あなたはこのような何かを実行する必要があります。

HttpClient client = new DefaultHttpClient(); 
HttpGet request = new HttpGet("http://www.myurl.com/api_name"); 
HttpResponse response = client.execute(request); 

あなたが(もちろん実際のURLで)これをデバッグする場合は、あなたがclient.execute中にフリーズのアプリのようなものを()に気づくでしょう。これは、要求が実際に発生し、アプリケーションが応答を待っている時点です。実際にレスポンスを受け取ったら、データを取得することはそれほど難しくありません。

これを理解したら、バックグラウンドタスクを実行するのに無限に役立つAsyncTaskを知りたいでしょう。ここでドキュメントを見つけることができます:http://developer.android.com/reference/android/os/AsyncTask.htmlこの右上の使用方法の素晴らしい例があります。

これらの2つの概念を併用すると、非同期HTTP要求を実行できます。基本的には、実際のHTTP実行コードをAsyncTaskのdoInBackgroundに配置します。 doInBackgroundの最後にレスポンスを返し、AsyncTaskのonPostExecuteでデータに必要な処理を行います。

0

質問の中で言及しているアプローチは、サーバー上のPHPとリクエスト/応答用のJSONです。しかし、それを完璧にするのは難しいことです。

SaveNoteToServerRequest、SaveNoteToServerResponseクラスのように、リクエスト/応答に必要なフィールドを持つ単純なJavaオブジェクトのように、Android側の呼び出しごとに小さなリクエスト/応答クラスを持つと便利です。次に、GSONのようなライブラリを使用してリクエストオブジェクトをJSONに変換し、HTTPレスポンスをJSONからレスポンスオブジェクトに変換することができます。

PHP側では、レスポンスオブジェクト用の小さなクラスを作成し、最後にjson_encodeを作成できます。

JSONオブジェクトを直接操作するのではなく、あなた自身のプレーンなJavaオブジェクトやPHPクラスを使用しています。

希望に役立ちます。

関連する問題