AndroidHttpClientのサンプルを書いた
今更ではありますが、AndroidHttpClientのコードを書いたので、メモ程度の書き残しておきます。
AndroidHttpClientはLevel 8 (Android 2.2 Froyo)から利用できます。2.1以前のAndroidには対応しませんので、DefaultHttpClientなどを利用する事になるかと思います。
AndroidHttpClient | Android Developers
http://developer.android.com/intl/ja/reference/android/net/http/AndroidHttpClient.html
下のソースは、AndroidHttpClientを利用して、Jsonデータを画面に出力するまでを書きました。
利用方法を見る程度なら、Activityを見れば十分です。
利用方法を見たけど、何がAndroidに最適化しているんだろうか???中身とか見てないので、ちょっと謎。
ソースはすべて、Githubに置いておきます。
https://github.com/sharakova/AndroidHttpClientSample
- Activity
AndroidHttpClientは、メインのスレッドで実行できないようなので、AsyncTaskを利用して実行しています。
package jp.sharakova.android.httpclient; import java.io.BufferedReader; import java.io.InputStreamReader; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import android.app.Activity; import android.net.http.AndroidHttpClient; import android.os.AsyncTask; import android.os.Bundle; import android.widget.TextView; public class TestActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final TextView text = (TextView)findViewById(R.id.text); new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... params) { try { // AndroidHttpClientを使ってみた (Android 2.2 Froyoから使えます) AndroidHttpClient client = AndroidHttpClient.newInstance("Android UserAgent"); HttpResponse res = client.execute(new HttpGet("https://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=fuzzy%20monkey")); // HttpResponseのEntityデータをStringへ変換 BufferedReader reader = new BufferedReader(new InputStreamReader(res.getEntity().getContent(), "UTF-8")); StringBuilder builder = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { builder.append(line + "\n"); } return builder.toString(); } catch (Exception e) { e.getStackTrace(); return ""; } } @Override protected void onPostExecute(String result) { // 画面に文字列を表示 text.setText(result); } }.execute(); } }
- layout
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="loading" /> </LinearLayout>
- AndroidManifest.xml
ネットに接続するために、permissionにandroid.permission.INTERNETを追加
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="jp.sharakova.android.httpclient" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <uses-permission android:name="android.permission.INTERNET"/> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".TestActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>