Android Asynchronous Http Client 사용

3046 단어 Android

Android Asynchronous Http Client


Apache HttpClient를 사용하기 쉬운 라이브러리 만들기
본가는여기.
javaDoc는 여기.
부기 ※ 비동기적으로 네트워크 액세스가 가능하지만 수신 데이터 처리는 UI 스레드에서 이루어지기 때문에 데이터 해석이 심한 경우에는 적합하지 않을 수 있습니다

비동기 통신의 실현 예시


단지 새로운 AsyncHttpClient를 이용할 뿐이다.아주 간단합니다.다음은 야후의 첫 페이지를 획득한 예이다
final AsyncHttpClient client = new AsyncHttpClient();

Button btn = (Button)findViewById(R.id.btn1);
btn.setOnClickListener(new View.OnClickListener() {            
    @Override
    public void onClick(View v) {
        final ProgressDialog progress = new ProgressDialog(MainActivity.this);
        progress.setTitle("Get Yahoo page");

        // 注意:onStart -> onSuccess -> onFinishの順番で呼ばれる
        client.get("http://www.yahoo.co.jp", new AsyncHttpResponseHandler() {
            @Override
            public void onSuccess(String response) {
                progress.dismiss();
                Log.i(TAG, "onSuccess");
                Log.v(TAG, response);
                Toast.makeText(getApplicationContext(), "Success", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onFinish() {
                Log.i(TAG, "onFinish");
                progress.dismiss();
            }

            @Override
            public void onStart() {
                Log.i(TAG, "onStart");
                progress.show();
            }
        });
    }
});

JSON 데이터 획득 예


JSONHttp ResponseHandler를 사용하면 JSONHtject를 통해 얻을 수 있습니다.
String url = "http://api.atnd.org/events/";
RequestParams params = new RequestParams();
params.put("twitter_id", "tomo_watanabe");
params.put("format", "json");

client.get(url, params, new JsonHttpResponseHandler() {
    @Override
    public void onSuccess(JSONObject json) {
            Log.i(TAG, "onSuccess: JSONObject");
            Log.i(TAG, json.toString());
        }                   
    });

이미지 다운로드 예


(이 샘플은 onSuccess()의 UI 단서에서 비트맵 디코딩을 했는데 좋지 않다는 지적이 있었다.)
String[] allowedContentTypes = new String[] { "image/png", "image/jpeg" };

client.get("https://si0.twimg.com/profile_images/2298573260/j84ygij3d64npr5yzxt3.png", 
        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);
    }
});

주요 분류도


좋은 웹페이지 즐겨찾기