android註冊登入介面

來源:互聯網
上載者:User

標籤: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註冊登入介面

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.