您的位置:首页 > 理论基础 > 计算机网络

012_02 asynchttpClient用户登录

2015-05-22 12:54 357 查看
android-async-http是专门针对Android在Apache的HttpClient基础上构建的异步的callback-based http client。
所有的请求全在UI线程之外发生,而callback发生在创建它的线程中,应用了Android的Handler发送消息机制。你也可
以把AsyncHttpClient应用在Service中或者后台线程中,库代码会自动识别出它所运行的context。
使用android-async-http只需要三步:

1. 创建一个AsyncHttpClient;
2. (可选的)通过RequestParams对象设置请求参数;
3. 调用AsyncHttpClient的某个get方法,传递你需要的(成功和失败时)callback接口实现,一般都是匿名内部类

项目的官方网站:http://loopj.com/android-async-http/
对应的github地址:https://github.com/loopj/android-async-http
需要导入的第三方开源包com.loopj.android.http

package com.example.day12_02login;

import java.net.URLEncoder;

import org.apache.http.Header;

import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.RequestParams;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {

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

Handler hanlder = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 1:
Toast.makeText(MainActivity.this, (String)msg.obj, 1).show();
break;
case 2:
Toast.makeText(MainActivity.this, (String)msg.obj, 0).show();
break;
default:
break;
}
}
};

class Myhandle extends AsyncHttpResponseHandler{
//200 进入
@Override
public void onSuccess(int statusCode, Header[] headers,
byte[] responseBody) {
//这个里面表示链接成功。
//应该在这里个去处理成功之后的事情。
System.out
.println("MainActivity.login(...).Myhandle.onSuccess()"+statusCode);
Toast.makeText(MainActivity.this, new String(responseBody)  , 1).show();
}
//!200进入
@Override
public void onFailure(int statusCode, Header[] headers,
byte[] responseBody, Throwable error) {
}
}

//Async http client 的get请求
public void login(View v){
EditText et_username = (EditText) findViewById(R.id.et_uername);
EditText et_password = (EditText) findViewById(R.id.et_password);

final String username= et_username.getText().toString();
final String password= et_password.getText().toString();
//http://localhost/LoginDemo/servlet/Login?username=wangdao&password=123456
String path = "http://192.168.3.30:8080/LoginDemo/servlet/Login?username="+URLEncoder.encode(username)+"&password="+password;

AsyncHttpClient asyncHttpClient = new AsyncHttpClient();
asyncHttpClient.get(path, new Myhandle());

}

//Async http client Post 请求实现
public void login2(View v){

EditText et_username = (EditText) findViewById(R.id.et_uername);
EditText et_password = (EditText) findViewById(R.id.et_password);

final String username= et_username.getText().toString();
final String password= et_password.getText().toString();
//http://localhost/LoginDemo/servlet/Login
//发请求的线程
String path = "http://192.168.3.30:8080/LoginDemo/servlet/Login";
AsyncHttpClient asyncHttpClient = new AsyncHttpClient();

RequestParams rp= new RequestParams();
rp.put("username", username);
rp.put("password", password);

asyncHttpClient.post(path, rp, new Myhandle());
}

}


activity_main.xml和 MyEclipse服务器端代码与 012_01HttpClient用户登录 相同。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: