android 登录验证,使用HTTP数据传送+jsion数据格式

1、熟悉什么是HTTP以及传输方式、JSION的数据格式怎么用。

android的json解析部分都在包org.json下,主要有以下几个类:

JSONObject:可以看作是一个json对象,这是系统中有关JSON定义的基本单元,其包含一对儿(Key/Value)数值。它对外部(External: 应用toString()方法输出的数值)调用的响应体现为一个标准的字符串(例如:{“JSON”: “Hello, World”},最外被大括号包裹,其中的Key和Value被冒号”:”分隔)。其对于内部(Internal)行为的操作格式略微,例如:初始化一个JSONObject实例,引用内部的put()方法添加数值:new JSONObject().put(“JSON”, “Hello, World!”),在Key和Value之间是以逗号”,”分隔。Value的类型包括:Boolean、JSONArray、JSONObject、Number、String或者默认值JSONObject.NULL object 。

JSONStringer:json文本构建类 ,根据官方的解释,这个类可以帮助快速和便捷的创建JSON text。其最大的优点在于可以减少由于 格式的错误导致程序异常,引用这个类可以自动严格按照JSON语法规则(syntax rules)创建JSON text。每个JSONStringer实体只能对应创建一个JSON text。。其最大的优点在于可以减少由于格式的错误导致程序异常,引用这个类可以自动严格按照JSON语法规则(syntax rules)创建JSON text。每个JSONStringer实体只能对应创建一个JSON text。

JSONArray:它代表一组有序的数值。将其转换为String输出(toString)所表现的形式是用方括号包裹,数值以逗号”,”分隔(例如: [value1,value2,value3],大家可以亲自利用简短的代码更加直观的了解其格式)。这个类的内部同样具有查询行为, get()和opt()两种方法都可以通过index索引返回指定的数值,put()方法用来添加或者替换数值。同样这个类的value类型可以包括:Boolean、JSONArray、JSONObject、Number、String或者默认值JSONObject.NULL object。

JSONTokener:json解析类
JSONException:json中用到的异常

HTTP就是一种传输协议,也就是有一种形式进行数据的传输,基本的框架是1、引入包;2建立连接,3进行传输,post或者get; 4 进行响应。

2、安卓登录验证实例:

package com.example.duola.app_manager;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class MainActivity extends AppCompatActivity {
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button loginBtn = (Button) findViewById(R.id.login);
        loginBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new Thread(new Runnable()  //新开一个线程
                {
                    @Override
                    public void run() {
                     EditText editText = (EditText) findViewById(R.id.phonenumber); //声明获取的位置
                        String username = editText.getText().toString(); //获取参数并进行类型转换
                        EditText editText1 = (EditText) findViewById(R.id.password);
                        String password = editText.getText().toString();
                        //StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());
                        String strUrl = "http://210.22.149.174:8101/api/Feedback"; //测试使用的url
                        try {
                            //创建连接
                            URL url = new URL(strUrl);
                            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                            connection.setDoOutput(true);
                            connection.setDoInput(true);
                            connection.setRequestMethod("POST");
                            connection.setUseCaches(false);
                            connection.setInstanceFollowRedirects(true);
                            connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                            connection.connect();

                            //POST请求
                            DataOutputStream out = new DataOutputStream(connection.getOutputStream());
                            JSONObject obj = new JSONObject();
                            obj.put("name", username);
                            //obj.put("password", password);
                            out.writeBytes(obj.toString());
                            out.flush();
                            out.close();

                            //读取响应
                            BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                            String lines;
                            StringBuffer sb = new StringBuffer("");
                            while ((lines = reader.readLine()) != null)
                            {
                                lines = new String(lines.getBytes(), "utf-8");
                                sb.append(lines);
                            }
                            System.out.println(sb);
                            reader.close();

                            // 断开连接
                            connection.disconnect();
                        }
                        catch (MalformedURLException e)
                        {
                            e.printStackTrace();
                        }
                        catch (UnsupportedEncodingException e)
                        {
                            e.printStackTrace();
                        }
                        catch (IOException e)
                        {
                            e.printStackTrace();
                        }
                        catch (JSONException ex)
                        {
                            throw new RuntimeException(ex);
                        }
                    }
                }).start();
            }
        });
    }
}

你可能感兴趣的:(android,登录验证)