利用httpclient来模拟用户登录
public class MainActivity extends Activity {
<span style="white-space:pre"> </span>//定义处理成功
protected static final int SUCEESS = 0;
<span style="white-space:pre"> </span>//反回错误的响应状态码时的错误
protected static final int ERROR = 1;
<span style="white-space:pre"> </span>//网络错误时
protected static final int NET_ERROR = 2;
private EditText et_name;
private EditText et_pwd;
<span style="white-space:pre"> </span>//利用handler 来实现子线程更新UI
private Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case SUCEESS:
Toast.makeText(MainActivity.this, (String) msg.obj, 0).show();
break;
case ERROR:
Toast.makeText(MainActivity.this, "请求有误", 0).show();
break;
case NET_ERROR:
Toast.makeText(MainActivity.this, "网络异常", 0).show();
break;
default:
break;
}
};
};
// private String path="http://192.168.1.96:8080/Loginfromphone/login";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_name = (EditText) findViewById(R.id.et_name);
et_pwd = (EditText) findViewById(R.id.et_pwd);
}
public void login(View v) {
final String name = et_name.getText().toString().trim();
final String pwd = et_pwd.getText().toString().trim();
if (TextUtils.isEmpty(name) || TextUtils.isEmpty(pwd)) {
Toast.makeText(this, "用户名或密码不能为空", 0).show();
return;
}
new Thread() {
@Override
public void run() {
try {
String path = "http://192.168.1.96:8080/Loginfromphone/login?";
<span style="white-space:pre"> </span>//get请求组拼url,因为get请求时参数是跟在url后面的
<span style="white-space:pre"> </span>//并且对name 与 pwd进行url编码
path = path + "username="
+ URLEncoder.encode(name, "utf-8") + "&password="
+ URLEncoder.encode(pwd, "utf-8");
// 创建一个客户端对象
HttpClient client = new DefaultHttpClient();
// 创建一个get请求的对象
HttpGet get = new HttpGet(path);
// 发送一个get请求
HttpResponse response = client.execute(get);
<span style="white-space:pre"> </span>//获取状态行
StatusLine statusLine = response.getStatusLine();
<span style="white-space:pre"> </span>//取得响应状态码
int code = statusLine.getStatusCode();
if (code == 200) {
<span style="white-space:pre"> </span>//拿到服务器端返回数据流
InputStream in = response.getEntity().getContent();
String data = StreamTool.stream2String(in);
Message msg = Message.obtain();
msg.what = SUCEESS;
msg.obj = data;
handler.sendMessage(msg);
} else {
handler.sendEmptyMessage(ERROR);
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
handler.sendEmptyMessage(NET_ERROR);
}
}
}.start();
}
public void login1(View v) {
final String name = et_name.getText().toString().trim();
final String pwd = et_pwd.getText().toString().trim();
if (TextUtils.isEmpty(name) || TextUtils.isEmpty(pwd)) {
Toast.makeText(this, "用户名或密码不能为空", 0).show();
return;
}
new Thread() {
@Override
public void run() {
try {
String path = "http://192.168.1.96:8080/Loginfromphone/login";
// 创建一个客户端对象
HttpClient client = new DefaultHttpClient();
// 创建一个post请求对象
HttpPost post = new HttpPost(path);
<span style="white-space:pre"> </span>//设置参数
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("username", name));
params.add(new BasicNameValuePair("password", pwd));
<span style="white-space:pre"> </span>//
post.setEntity(new UrlEncodedFormEntity(params, "utf-8"));
HttpResponse response = client.execute(post);
StatusLine statusLine = response.getStatusLine();
int code = statusLine.getStatusCode();
if (code == 200) {
InputStream in = response.getEntity().getContent();
String data = StreamTool.stream2String(in);
Message msg = Message.obtain();
msg.what = SUCEESS;
msg.obj = data;
handler.sendMessage(msg);
} else {
handler.sendEmptyMessage(ERROR);
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
handler.sendEmptyMessage(NET_ERROR);
}
}
}.start();
}
}