码迷,mamicode.com
首页 > 移动开发 > 详细

android注册登录界面

时间:2017-12-31 23:26:03      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:9.1   break   post   message   intent   ast   json对象   trace   entity   

android的注册登录界面,主要写一下用到的东西。

首先,后台用jsp写,这里的话用到的返回数据为json,可以用一种很简单的方式

<%@ page language="java" contentType="text/json; charset=UTF-8" pageEncoding="UTF-8" import="java.sql.*,java.io.*,java.util.*" %>

这里面修改 contentType=“text/json”就可以了。

对于客户端,主要是

  • 界面之间的跳转
  • 对服务器的请求
  • 对json数据的解析

1)界面之间的跳转
用Intent,Intent i=new Intent(MainActivity.this,ResActivity.class);
startActivity(i)

2)android的网络请求主要有三个大方式我们这里用httpclinet
首先,android不允许把http请求放在主线程中(容易阻塞),所以必须新建一个副
线程来处理网络请求部分。具体请求时首先用到client(DefaultHttpClient类)用于
执行请求。然后用到HttpPost作为一个post对象(get方法用HttpGet),再是post参数的
设置,UrlEncodedFormEntity entity=new UrlEncodedFormEntity(parameter,"utf-8");
parameter为一个数组列表。


    private  void get(final String name,final String password){
        new Thread(new Runnable(){
            public void run(){
        BufferedReader reader=null;
        StringBuffer sb=null;
        String result="";
        DefaultHttpClient client=new DefaultHttpClient();
        String uri="http://10.65.89.152/server/servers.jsp";
        
        List parameter=new ArrayList();
        parameter.add(new BasicNameValuePair("username",name));
        parameter.add(new BasicNameValuePair("password",password));
        
        HttpPost request=new HttpPost(uri);
        
        //HttpResponse responses=client.execute(request);
        try{
            UrlEncodedFormEntity entity=new UrlEncodedFormEntity(parameter,"utf-8");
            request.setEntity(entity);
            //Toast.makeText(MainActivity.this,"success1 connect",Toast.LENGTH_SHORT).show();
            //request.setEntity(entity);
            HttpResponse response=client.execute(request);
            //Toast.makeText(MainActivity.this,"success2 connect",Toast.LENGTH_SHORT).show();
            if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){
                //Toast.makeText(MainActivity.this,"success connect",Toast.LENGTH_SHORT).show();
                reader=new BufferedReader(new InputStreamReader(response.getEntity().getContent()));        
                sb=new StringBuffer();
                String line="";
                String NL=System.getProperty("line.separator");
                while((line=reader.readLine())!=null){
                    sb.append(line);
                }
                }
            //Toast.makeText(MainActivity.this,"faile connect",Toast.LENGTH_SHORT).show();
        }catch(ClientProtocolException e){
            //Toast.makeText(MainActivity.this,"error connect",Toast.LENGTH_SHORT).show();
            e.printStackTrace();
        }catch(IOException e){
            //Toast.makeText(MainActivity.this,"error2 connect",Toast.LENGTH_SHORT).show();
            e.printStackTrace();
        }
        
            try{
                if(null!=reader){
                    reader.close();
                    reader=null;
                }
                }catch(IOException e){
                    e.printStackTrace();
            }
            if(null!=sb){
                result=sb.toString();
            }
        
             Message message = new Message();
             message.what = SHOW_RESPONSE;
             message.obj = result;
             handler.sendMessage(message);
             Message messages=new Message();
             
             
    }
            }).start();
        }

3)对于json对象的处理。
用到一个jar包 gson。
private void parseJSONWithJSONObject(String jsonData){
try {
//将json字符串jsonData装入JSON数组,即JSONArray
//jsonData可以是从文件中读取,也可以从服务器端获得
JSONArray jsonArray = new JSONArray(jsonData);
String state=null;
String name=null;
String id=null;
for (int i = 0; i< jsonArray.length(); i++) {
//循环遍历,依次取出JSONObject对象
//用getInt和getString方法取出对应键值
JSONObject jsonObject = jsonArray.getJSONObject(i);
// int stu_no = jsonObject.getInt("stu_no");

            state=jsonObject.getString("code");
            name=jsonObject.getString("name");
            id=jsonObject.getString("id");
            Log.d("MainActivity","code:"+state);
            
        }
      if(state.equals("success")){
            Intent ii=new Intent(MainActivity.this,SecActivity.class);
            ii.putExtra("USERNAME",name);
            ii.putExtra("id", id);
            startActivity(ii);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}   

4)主线程与副线程的通信
public static final int SHOW_RESPONSE = 0;

 private Handler handler = new Handler() {
      
              @Override
              public void handleMessage(Message msg) {
                  super.handleMessage(msg);
                  switch (msg.what) {
                 case SHOW_RESPONSE:
                      String response = (String) msg.obj;
                      //textviews.setText(response);
                      parseJSONWithJSONObject(response);
                      break;
     
                  default:
                      break;
                  }            
              }
      
          };

android注册登录界面

标签:9.1   break   post   message   intent   ast   json对象   trace   entity   

原文地址:https://www.cnblogs.com/qynx/p/8159265.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!