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

猜你喜欢

转载自blog.csdn.net/xikai18827083487/article/details/52444590