【Android】簡単なHTTP通信
こんばんは。
今回はAndroidのHTTP通信について書きたいと思います。
AndroidのHTTP通信はデフォルトのは割とめんどくさいもの・・・
そこで、今回は Asynchronous Http Client というライブラリを使用し、HTTP通信を簡単に実装したいと思います。
以下、手順です。
- こちらから jar ファイルをダウンロードし、プロジェクトのlibsフォルダに入れる
- プロジェクト > プロパティ > java のビルド・パス > ライブラリー > jar追加 で、先ほどのファイルを追加する。
- AndroidManifestに以下のパーミッション追加
<uses-permission android:name="android.permission.INTERNET"/>
あとはソースコードを書くだけです。
以下、サンプルになります。
サンプル
AsyncHttpClient client = new AsyncHttpClient(); RequestParams params = new RequestParams(); params.put("key", "value"); params.put("key", "value"); String url = "URL"; client.get(url, params, new AsyncHttpResponseHandler(){ // client.get を client.post にすれば、POST通信もできます @Override public void onStart(){ // 通信開始時の処理 } @Override public void onSuccess(String response){ // 通信成功時の処理 } @Override public void onFailure(Throwable e, String response){ // 通信失敗時の処理 } @Override public void onFinish(){ // 通信終了時の処理 } });
JSONデータ取得
client.get(url, params, new JsonHttpResponseHandler(){ @Override public void onSuccess(JSONObject json) { Toast.makeText(MainActivity.this, json.toString(), Toast.LENGTH_SHORT).show(); } }
画像のダウンロード
String[] allowedContentTypes = new String[] { "image/png", "image/jpeg" }; client.get("image URL", new BinaryHttpResponseHandler(allowedContentTypes) { @Override public void onSuccess(byte[] fileData) { ImageView image = (ImageView)findViewById(R.id.imageView); Bitmap bitmap = BitmapFactory.decodeByteArray(fileData, 0, fileData.length); image.setImageBitmap(bitmap); } });
Time outの指定
デフォルトでは10秒になっていますが、以下のようにすると自分で設定できます。
sctTimeOut(7);