HttpClient簡介:Httpclient核心架構設計
HttpClient框架jar包下載:HttpClient框架jar包下載
在這裏我將介紹在Android中使用異步HttpClient框架實現簡單登錄功能:
第一步:導入HttpClient框架,這個框架的jar包在網上可以找到。導入過程和導入其他的jar包類似
第二步:編寫登錄界面;
第三步:編寫登陸界面對應的Activity;
Activity中所要做的工作有:
獲取用戶名和密碼
創建異步httpclient對象
通過異步HttpClient框架提交請求並獲取響應
- 更具相應的返回結果做對應處理
界面代碼:
<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,這個類中有兩個回調方法。