Furudateのブログ

プログラミングやネットワーク系の知識・技術がメインのブログ。技術メモ帳的な感じになるかと。岩手から発信していきます。

【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);