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,这个类中有两个回调方法。