网络请求okhttp框架

使用的是网络请求的okhttp框架
这个博客很好的解释okhttp框架值得推荐

http://blog.csdn.net/lmj623565791/article/details/47911083

简单的SharedPreferences:
Preferences 在Android当中被用来记录应用,以及用户喜好等等,它可以用来保存
一些简单的数据类型,Boolean,int,String等

数据的存入必须通过SharedPreferences对象的编辑器对象Editor来实现,存入(put)之后与写入数据库类似一定要commit。
apply()一下就可以
存入的代码:

           SharePreferences editor = pref.edit();
                            if(remember_pass.isChecked()){
                                editor.putBoolean("remember_pass",true);
                                editor.putString("account",Account);
                                editor.putString("password",passWord);
                            }
                            else{
                                editor.clear();
                            }
                            editor.apply();

写入的代码:
直接get对应的类型就可以
它有两个参数,第一个是参数对应的名称,第二个是参数对应的是若访问失败,
则返回的值

boolean isRemember = pref.getBoolean("remember_pass",false);
String account = pref.getString("account","");
String password = pref.getString("password","");

对于耗时的问题,我们都在在子线程中运行,但有一点在子线程中不允许更新UI,
在android4.0之后网络请求必须在子线程中完成

private void sendRequestWithOkHttp(){
        new Thread(){
            public void run(){
              //  Toast.makeText(MainActivity.this,"you click it",Toast.LENGTH_LONG).show();
                try{
                    //构建request请求
                    RequestBody requestBody = new FormEncodingBuilder()
                                            .add("loginname",Account)
                                            .add("password",passWord)
                                            .add("is phone","1")
                                            .build();

                    OkHttpClient client = new OkHttpClient();
                    Request request = new Request.Builder()
                                      .url("http://218.25.54.49:2222/yxh_web/syrj_security_check")
                                      .post(requestBody)
                                      .build();
                    //执行
                    Response response = client.newCall(request).execute();
                    responseData = response.body().string();
                    Message msg = new Message();
                    msg.what = UpData;
                    handler.sendMessage(msg);
                  //  showResponse(responseData);
                }catch(Exception e){
                    e.printStackTrace();
                }
            }
        }.start();
    }

为了能够更新UI我们以msg为中间的媒介,写了handlerMessage()来处理
更新UI,Handle类的定义:
主要接受子线程发送的数据,并用此数据配合主线程更新UI

private Handler handler = new Handler() {
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case UpData:
                    try{
                        JSONObject jsonObject = new JSONObject(responseData);
                        String flag = jsonObject.getString("resultflag");
                        msg1 = jsonObject.getString("error_msg");
                        //获取日期
                        SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
                        Date curDate = new Date(System.currentTimeMillis());
                        String Date = formatter.format(curDate);
                        //数据库操作
                        SQLiteDatabase db = dbHelper.getWritableDatabase();
                        ContentValues values = new ContentValues();
                        values.put("Account",Account);
                        values.put("Password",passWord);
                        values.put("If_Log",msg1);
                        values.put("Date",Date);
                        db.insert("Record",null,values);
                        values.clear();

                        if(flag.equals("1")){
                            editor = pref.edit();
                            if(remember_pass.isChecked()){
                                editor.putBoolean("remember_pass",true);
                                editor.putString("account",Account);
                                editor.putString("password",passWord);
                            }
                            else{
                                editor.clear();
                            }
                            editor.apply();
                            Intent intent = new Intent(MainActivity.this,Main2Activity.class);
                            startActivity(intent);
                        }
                        else{
                           // Log.d("eee",msg1);
                            Toast.makeText(MainActivity.this,msg1,Toast.LENGTH_LONG).show();                        }
                    }catch(Exception e){
                        e.printStackTrace();
                    }
                    break;
                default:
                    break;
            }
        }
    };
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值