在完成了注册的Activity跳转后,要实现的当然是注册的这项功能,注册肯定要连接到服务器,对于我们这个移动云盘来说,服务端方面是由师兄给我们写好的,所以我只需要进行相应的代码实现联网。
界面:对于界面我只简略的说下,因为和启动软件后的界面大同小异。
该Activity我只设置了三个TextView和三个EditText和一个注册按钮。点击注册按钮就会连接服务端,响应相应的联网操作。代码如下:
由于联网操作是一件耗时的工作,在Android4.0以后在主线程中就不能够有耗时的操作所以必须新建一个线程来进行联网的操作,在线程里面又不能够用Toast,这时候我们就会用到hangdler这个机制。(子线程不能够控制主线程的控件,也会用到handler的机制)
new Thread(){
public void run(){
<**定义一个字符串变量,来接收一个URL(统一资源定位符(Uniform Resource Locator,缩写为URL)是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。)*>
String httpUrl="http://192.168.1.112:8080/sign";
<**使用post的方式来进行请求,另外还可以用get来进行请求,在这次注册操作当中我是使用了post来进行请求的,在后面的登录操作我用到的就是get的请求,get和post的最大区别就是post把请求参数封装成一个body,而get是把请求参数暴露在URL中的,显然,师兄post的方法是会比get的方法更加安全*>
HttpPost httpRequest=new HttpPost(httpUrl);
<**使用NameValuePair保存键值对定义List<NameValuePair>的params的对象,把account和password都添加都到params里面*>
List<NameValuePair> params=new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("account",NewSign.getText().toString().trim()));
params.add(new BasicNameValuePair("password",NewLogin.getText().toString().trim()));
HttpEntity httpentity = null;
try {
<** 对params进行utf8的编码,编码后作为一个响应头*>
httpentity = new UrlEncodedFormEntity(params,"utf8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
httpRequest.setEntity(httpentity);
HttpClient httpclient=new DefaultHttpClient();
HttpResponse httpResponse = null;
try {
httpResponse = httpclient.execute(httpRequest);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
String strResult = null;
//每个请求后都会返回一个编码,例如404,507,等等,其中200代表ok,也就是请求成功
if(httpResponse.getStatusLine().getStatusCode()==200)
{
try {
//定义一个字符串变量,用来接收服务端返回的字符串。
strResult = EntityUtils.toString(httpResponse.getEntity());
} catch (ParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
Log.e("chaojian",strResult);
Message m=new Message();
if(strResult.equals("账号注册成功"))
m.what=1;
else if(strResult.equals("账号已存在"))
m.what=2;
else
m.what=3;
if(strResult!=null)
handler.sendMessage(m);
}
}.start();