Android中的異步HttpClient框架

界面
HttpClient簡介:Httpclient核心架構設計
HttpClient框架jar包下載:HttpClient框架jar包下載
在這裏我將介紹在Android中使用異步HttpClient框架實現簡單登錄功能:

第一步:導入HttpClient框架,這個框架的jar包在網上可以找到。導入過程和導入其他的jar包類似

第二步:編寫登錄界面;

第三步:編寫登陸界面對應的Activity;

Activity中所要做的工作有:

  1. 獲取用戶名和密碼

  2. 創建異步httpclient對象

  3. 通過異步HttpClient框架提交請求並獲取響應

  4. 更具相應的返回結果做對應處理

界面代碼:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" 
    android:orientation="vertical"
    >

    <EditText
        android:id="@+id/et_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="請輸入用戶名" 
        android:text="李榮"
        />
    <EditText
        android:id="@+id/et_pass"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="請輸入密碼" 
        />
    <Button 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="get"
        android:text="GET方式提交"
        />
    <Button 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="post"
        android:text="POST方式提交"
        />

</LinearLayout>

Activity代碼:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }


    public void get(View v){
        EditText et_name = (EditText) findViewById(R.id.et_name);
        EditText et_pass = (EditText) findViewById(R.id.et_pass);

        final String name = et_name.getText().toString();
        final String pass = et_pass.getText().toString();
        //提交到服務器端的地址(因爲是get請求,所以參數在地址裏面)
        String url = "http://192.168.13.13/Web/servlet/CheckLogin?name=" + URLEncoder.encode(name) + "&pass=" + pass;
        //創建異步httpclient
        AsyncHttpClient ahc = new AsyncHttpClient();

        //發送get請求提交數據
        ahc.get(url, new MyResponseHandler());
    }

    public void post(View v){
        EditText et_name = (EditText) findViewById(R.id.et_name);
        EditText et_pass = (EditText) findViewById(R.id.et_pass);

        final String name = et_name.getText().toString();
        final String pass = et_pass.getText().toString();
        String url = "http://192.168.13.13/Web/servlet/CheckLogin";

        //創建異步httpclient
        AsyncHttpClient ahc = new AsyncHttpClient();

        //發送post請求提交數據
        //把要提交的數據封裝至RequestParams對象
        RequestParams params = new RequestParams();
        //服務端將根據key拿到相應的值
        params.add("name", name);
        params.add("pass", pass);
        ahc.post(url, params, new MyResponseHandler());
    }

    class MyResponseHandler extends AsyncHttpResponseHandler{

        //請求服務器成功時,此方法調用
        @Override
        public void onSuccess(int statusCode, Header[] headers,
                byte[] responseBody) {

        }

        //請求失敗此方法調用
        @Override
        public void onFailure(int statusCode, Header[] headers,
                byte[] responseBody, Throwable error) {

        }

    }

}

這裏將就post請求做一個解釋:

       String url = "http://192.168.13.13/Web/servlet/CheckLogin";

        //創建異步httpclient
        AsyncHttpClient ahc = new AsyncHttpClient();

        //發送post請求提交數據
        //把要提交的數據封裝至RequestParams對象
        RequestParams params = new RequestParams();
        //服務端將根據key拿到相應的值
        params.add("name", name);
        params.add("pass", pass);
        ahc.post(url, params, new MyResponseHandler());

MyResponseHandler類繼承於AsyncHttpResponseHandler,這個類中有兩個回調方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章