开发日志—详细的链接服务器代码(登录)

        进行链接服务器 ,输入密码账号,登录页面 是基本APP都有的功能,总结了下:过

        用户登陆界面

/**
 * @author think
 *用户登陆界面
 */
public class LoginUi extends Activity implements HttpCallBack{

	private EditText emailET;
	private EditText passwordET;
	private ImageButton loginIB;
	private TextView registerTV;
	private TextView pwdForgetTV;
	private User user;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.activity_login);
		initViews();
		setListener();
	}
<span style="background-color: rgb(255, 204, 255);">	private void setListener() {

		loginIB.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View arg0) {
				UserLogin userlogin=null;
				try {
					userlogin = (UserLogin) BeanFactory.getInstance("UserLogin");
				} catch (Exception e) {
					BasicUtil.showMassage(LoginUi.this, "sorry, class not found");
				}
				getUserData();
				if(user==null){
					return;
				}
				
				userlogin.loginResult(user,LoginUi.this);
			}
		});</span>

		registerTV.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View arg0) {
				startActivity(RegisterUi.class);
			}
		});

		pwdForgetTV.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View arg0) {
				startActivity(FindPasswordUi.class);
			}
		});
	}
	/**
	 * 初始化组件
	 */
	private void initViews() {
		emailET=(EditText)findViewById(R.id.et_login_email);
		passwordET=(EditText)findViewById(R.id.et_login_password);
		loginIB = (ImageButton)findViewById(R.id.ib_login_submit);
		registerTV = (TextView)findViewById(R.id.tv_login_register);
		pwdForgetTV=(TextView) findViewById(R.id.tv_login_forgetpassord);
		// TODO 初始化组件
	}

	/**
	 * 获得用户的登录数据
	 */
	private void getUserData() {
		String username=emailET.getText().toString();
		String password=passwordET.getText().toString();
		if(TextUtils.isEmpty(username)){
			BasicUtil.showMassage(this, "邮箱不能为空");
			return;
		}
		if(TextUtils.isEmpty(password)){
			BasicUtil.showMassage(this, "密码不能为空");
			return;
		}
		user=new User(username, password);
	}

	private void startActivity(Class<?> clazz){
		Intent intent=new Intent(this,clazz);
		startActivity(intent);
	}

	@Override
	public boolean onMenuItemSelected(int featureId, MenuItem item) {
		return super.onMenuItemSelected(featureId, item);
	}

	@Override
	protected void finalize() throws Throwable {
		super.finalize();
	}
	@Override
<span style="background-color: rgb(255, 204, 255);">	public void callBack(Object object) {
		
		Message message = handler.obtainMessage();
		message.what = 1;
		message.obj = object;
		handler.sendMessage(message);
	}
	Handler handler=new Handler(){

		@Override
		public void handleMessage(android.os.Message msg) {
			// TODO Auto-generated method stub
			switch (msg.what) {
			case 1:
				 System.out.println("结果:"+ msg.obj);//这里就是你得到的结果     可以再这里修改UI
				 if((Boolean)msg.obj==true){
						startActivity(MainUi.class);
					}else{
						BasicUtil.showMassage(LoginUi.this, "登录失败");
					}
				 break;
			default:
				break;
			}
		}
		
	};</span>

}

回调函数接口HttpCallBack 

public interface HttpCallBack {
	void callBack(Object object);

}

用户登录业务类UserLogin 

/**
 * @author think 用户登录业务类
 */
public class UserLogin {

	/**
	 * 用户登录业务
	 * 
	 * @param userinfo
	 * @return 登录结果
	 */
	public void loginResult(User userinfo, HttpCallBack httpCallBack) {

		ArrayList<NameValuePair> pairs = getPairs(userinfo);
		String uri = "http://" + ConstValue.IP + ":" + ConstValue.PORT;
		try {
			ApacheHttpClient.httpPost(uri, pairs, httpCallBack);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * @param userinfo
	 *            封装用户登录信息
	 */
	private ArrayList<NameValuePair> getPairs(User userinfo) {
		ArrayList<NameValuePair> pairs = new ArrayList<NameValuePair>();
		NameValuePair pair = null;
		pair = new BasicNameValuePair("username", userinfo.getEmail());
		pairs.add(pair);
		pair = new BasicNameValuePair("password", userinfo.getPassword());
		pairs.add(pair);
		return pairs;
	}

}

发送Http请求ApacheHttpClient 

/**
 * @author think 发送Http请求
 */

public class ApacheHttpClient {

	/**
	 * @return
	 * 
	 */
	public static String httpGet(String uri) {
		String response = null;// 响应
		HttpClient httpClient = new DefaultHttpClient();
		// 创建HttpGet对象
		HttpGet httpGet = new HttpGet(uri);
		HttpResponse httpResponse;
		try {
			// 使用execute方法发送HTTP GET请求,并返回HttpResponse对象
			httpResponse = httpClient.execute(httpGet);
			int statusCode = httpResponse.getStatusLine().getStatusCode();// 返回码
																			// ,
			if (statusCode == HttpStatus.SC_OK) {
				// 获得返回结果
				response = EntityUtils.toString(httpResponse.getEntity());
			} else {
				response = "返回码:" + statusCode;
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		System.out.println(response);
		return response;

	}

	/**
	 * 以Post方式发送请求
	 * 
	 * @param url
	 *            请求地址
	 * @param params
	 *            参数 ,Post方式必须用NameValuePair[]阵列储存参数
	 * @return
	 * @throws Exception
	 */
	<span style="background-color: rgb(255, 204, 255);">public static void httpPost(final String uri,
			final List<NameValuePair> params,final HttpCallBack httpCallBack) throws Exception {
		
		new Thread(new Runnable() {
			public void run() {
				String response = null;
				HttpClient httpClient = new DefaultHttpClient();
				HttpPost httpPost = new HttpPost(uri);
				try {
					// 设置httpPost请求参数
					httpPost.setEntity(new UrlEncodedFormEntity(params,
							HTTP.UTF_8));
					// 使用execute方法发送HTTP Post请求,并返回HttpResponse对象,会有延迟等待
					HttpResponse httpResponse = httpClient.execute(httpPost);
					int statusCode = httpResponse.getStatusLine()
							.getStatusCode();// 返回码 ,
					if (statusCode == HttpStatus.SC_OK) {
						response = EntityUtils.toString(httpResponse
								.getEntity());
						JSONObject obj = new JSONObject(response);
						Boolean result = (Boolean) obj.opt("success");
						Log.i("----", "result=" + result);
						httpCallBack.callBack(result);//回调
						
					} else {
						response = "返回码:" + statusCode;
                          
					}
				} catch (Exception e) {
					e.printStackTrace();
				}

			}
		}).start();

		// get-->opt
		
		// ToDo:解析obj
		

	}
}</span>



                                                                                          

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值