做android开发时间不长,与服务器打交道基本不会,花了二天时间才把登陆功能实现。下面讲一下实现过程。
s首先,导入两个包:volley 框架包和gson包
compile files('libs/volley_source.jar')
compile 'com.google.code.gson:gson:2.8.0'
z再次,核心代码:
private void init() {
loginAccount = (EditText) findViewById(R.id.login_account);
loginPassword = (EditText) findViewById(R.id.login_password);
loginBtn = (Button) findViewById(R.id.login_btn);
loginBtn.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String account = loginAccount.getText().toString();//账号
String password = loginPassword.getText().toString();//密码
// 判断输入是否为空
if (!TextUtils.isEmpty(account) && !TextUtils.isEmpty(password)
) {
HashMap map = new HashMap<String, String>();
map.put("UserName", account);
map.put("UserPass", password);
loginRequest(Request.Method.POST, UrlConstance.APP_URL, map);
} else {
Toast.makeText(LoginActivity.this, "账号或者密码有误", Toast.LENGTH_SHORT).show();
}
}
});
}
String resultCode;
// post方法 url地址 参数
private void loginRequest(int post, final String appUrl, final HashMap map) {
StringRequest stringRequest = new StringRequest(
post,
appUrl,
new Response.Listener<String>() {
@Override
public void onResponse(String s) {
if (map != null) {
// Gson 直接解析 UserBaseInfo类 这个类包含一个code和 一个msg实体类 msg中包含用户的信息
// 如果map(输入框输入的不为空) 进入Gson解析
try {
JSONObject jsonObject = new JSONObject(s);
resultCode = jsonObject.getString("code");
} catch (JSONException e) {
e.printStackTrace();
}
if (resultCode.equals("1")){
// 如果userBaseInfo.getCode().equals(1)则再次解析对msg解析 这次是
UserBaseInfo info = new Gson().fromJson(s, new TypeToken<UserBaseInfo>(){
}.getType());
//
Intent intent = new Intent(LoginActivity.this,MainActivity.class);
startActivity(intent);
}else {
Toast.makeText(getApplicationContext(), "用户名或密码错误1", Toast.LENGTH_LONG).show();
}
}else {
Toast.makeText(getApplicationContext(), "用户名或密码错误2", Toast.LENGTH_LONG).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
Log.e("LoginActivity", "volleyError:" + volleyError);
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
return map;
}
};
mQueue.add(stringRequest);
}